1

現在、POSIXタイムスタンプを含むdoubleがあり、gmtimeとasctimeを使用して、time_t構造体を介してカレンダーの日付を表示しています。

    time_t input = posix;
    printf("%s",asctime(gmtime(&input)));

これは、(明らかに)POSIX時間がtime.hライブラリの制限(つまり1901-2038)を超えている場合を除いて、うまく機能します。この場合、1901年の日付が返されます。gmtime/ asctime/time.hに代わる簡単な方法はありますか。 、または私は単に生の数字で作業する必要がありますか?

編集:posix doubleは現在のシステム時刻のインスタンス化ではなく計算の結果であるため、これらの制限を超える結果になる可能性がかなり高いことを追加する必要があります。

4

1 に答える 1

0

Unix Time に関するウィキペディアのエントリを読んでください。

<time.h>POSIX および Open Group Unix 仕様には C 標準ライブラリが含まれており、ヘッダー ファイルで定義された時間型と関数が含まれています。ISO C 標準ではtime_t、算術型である必要があると規定されていますが、特定の型やエンコーディングは必須ではありません。

移植可能な方法で広範囲の時間を処理する必要がある場合は、おそらく独自の時間ライブラリを使用する必要があります。struct tm1901 年から 2038 年までの範囲をカバーできるとは思えません。

time_t に関するこのStackOverflow の回答もお読みください。

于 2012-12-28T17:05:37.197 に答える