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);

这会将t1t2设置为相同的值。

我通常使用:

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

因为我很少需要同时复制两份。不清楚为什么双重行为被认为是可取的,但早在 1978 年的第 7 版 UNIX™ 中就是这样,并且界面没有改变。

请注意,标准 C(ISO/IEC 9899:2011 §7.27.2.4 'The timefunction')只是说:

time函数确定当前日历时间。该值的编码未指定。

的 POSIX 定义time()为您提供了更有用的定义:

time()函数应返回自纪元以来的时间值(以秒为单位)。

tloc参数指向还存储返回值的区域。如果tloc是空指针,则不存储任何值。

这大概就是您所说的“UTC时间”的意思。

于 2013-04-09T23:26:09.617 回答