ホームページ >バックエンド開発 >C++ >Windows で strptime() 機能を実装するにはどうすればよいですか?

Windows で strptime() 機能を実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-22 14:20:11127ブラウズ

How Can I Implement strptime() Functionality on Windows?

strptime() Windows 用

strptime() は、テキスト文字列を tm 構造に解析するために一般的に使用される POSIX 関数です。残念ながら、この関数は Windows では使用できません。

代替実装

Windows 用の strptime() の同等の優れた実装をお探しの場合は、ここに解決策があります。 sscanf、struct tm、および mktime を利用する関数:

  1. sscanf を使用して日付を解析します。
  2. 月のインデックスが 0 であり、年が 1900 年から始まることを調整して、整数を struct tm にコピーします。
  3. 最後に、mktime を使用して UTC エポックを取得しますinteger.

夏時間の問題を避けるために、構造体 tm の isdst メンバーを -1 に設定することを忘れないでください。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    char *date_str = "MM-DD-YYYY HH:MM:SS";

    struct tm tm;
    sscanf(date_str, "%d-%d-%d %d:%d:%d", &tm.tm_mon, &tm.tm_mday, &tm.tm_year, &tm.tm_hour, &tm.tm_min, &tm.tm_sec);

    tm.tm_mon -= 1;  // Adjust for zero-indexing
    tm.tm_year -= 1900;  // Adjust for 1900 starting year

    time_t epoch = mktime(&tm);

    printf("Epoch: %ld\n", epoch);

    return 0;
}

以上がWindows で strptime() 機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。