4

検討:

#include <time.h>

time_t now = time(NULL);

time_t timer;
time(&timer);

どちらも UTC 値を生成しますか?そうでない場合、それらはどのように異なりますか?

4

1 に答える 1

4

あまり違いはありません。理論的には、次のように書くことができます。

time_t t1;
time_t t2 = time(&t1);

t1これにより、との両方t2が同じ値に設定されます。

私は通常使用します:

time_t t3 = time(0);  // Or NULL

同時に 2 つのコピーが必要になることはめったにないからです。二重の動作が望ましいと考えられた理由は明確ではありませんが、1978 年の 7th Edition UNIX™ ではそうであり、インターフェイスは変更されていません。

標準 C (ISO/IEC 9899:2011 §7.27.2.4 'time関数') では次のように述べられていることに注意してください。

このtime関数は、現在のカレンダー時間を決定します。値のエンコーディングは指定されていません。

の POSIX 定義はtime()、より有用な定義を提供します。

このtime()関数は、エポックからの経過時間を秒単位で返します。

引数はtloc、戻り値も格納される領域を指します。がヌル ポインターの場合tloc、値は格納されません。

これはおそらく、「UTC 時間」の意味です。

于 2013-04-09T23:26:09.617 に答える