我知道我们可以使用clock_gettime(CLOCK_MONOTONIC)
函数。
我的问题是,如果我需要从纪元以来的纳秒时间,那将是一个巨大的数字。
比如:
- 从纪元以来的秒数为
13438461673
,那么纳秒数就是13438461673 * 1000000000
我该如何将其放入一个64位整数中呢?
CLOCK_MONOTONIC
是从任意的时间点开始计算的,实际上在Linux中每台机器以及每次开机都可能不同。你只应该使用它来测量时间间隔,例如:
(int64_t)(after.tv_sec - before.tv_sec) * (int64_t)1000000000UL
+ (int64_t)(after.tv_nsec - before.tv_nsec)
关于时间戳,请使用CLOCK_REALTIME
,因为它使用1970年01月01日00:00:00 UTC纪元。 int64_t
可以以纳秒精度处理CLOCK_REALTIME
时间戳。
(int64_t)(t.tv_sec) * (int64_t)1000000000 + (int64_t)(t.tv_nsec)
- 最早的日期可以追溯到1679年,最晚的日期至少为2261年;范围是±292年,而不是±145年。
- 名义上的动物
timespec
结构体,就像clock_gettime
函数中所填充的那样。 - Some programmer dude