検討:
#include <time.h>
time_t now = time(NULL);
対
time_t timer;
time(&timer);
どちらも UTC 値を生成しますか?そうでない場合、それらはどのように異なりますか?
検討:
#include <time.h>
time_t now = time(NULL);
対
time_t timer;
time(&timer);
どちらも UTC 値を生成しますか?そうでない場合、それらはどのように異なりますか?
あまり違いはありません。理論的には、次のように書くことができます。
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 時間」の意味です。