考虑:
#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
因为我很少需要同时复制两份。不清楚为什么双重行为被认为是可取的,但早在 1978 年的第 7 版 UNIX™ 中就是这样,并且界面没有改变。
请注意,标准 C(ISO/IEC 9899:2011 §7.27.2.4 'The time
function')只是说:
该
time
函数确定当前日历时间。该值的编码未指定。
的 POSIX 定义time()
为您提供了更有用的定义:
该
time()
函数应返回自纪元以来的时间值(以秒为单位)。
tloc
参数指向还存储返回值的区域。如果tloc
是空指针,则不存储任何值。
这大概就是您所说的“UTC时间”的意思。