std::chrono::time_point::time_since_epoch()
返回duration
,过去曾提到某些time_point
。什么时候是time_point
?它取决于C ++实现还是由C ++标准定义的?或者它是将事件设定为1970年1月1日UTC的事实上的标准?
答案 0 :(得分:37)
它是clock
引用的特定time_point
和clock
的实现的函数。该标准规定了三种不同的时钟:
system_clock
steady_clock
high_resolution_clock
标准没有指定任何这些时钟的纪元。
程序员(你)也可以创作自己的时钟,这些时钟可能会也可能不会指定一个时代。
有一个事实上(非正式)标准std::chrono::system_clock::time_point
有一个与Unix Time一致的纪元。这被定义为自1970年1月1日星期四00:00:00协调世界时(UTC)以来经过的持续时间,不计算闰秒。
Fwiw,here is a date/time library利用了这个事实上的标准。
其他两个std指定的时钟没有事实上的标准。此外,high_resolution_clock
被允许为system_clock
或steady_clock
的类型别名。
在OS X上,high_resolution_clock
是steady_clock
的类型别名,steady_clock
是自计算机启动以来的纳秒数(与UTC没有任何关系)。