何时是std :: chrono epoch?

时间:2015-04-22 13:35:53

标签: c++ c++11 epoch chrono

std::chrono::time_point::time_since_epoch()返回duration,过去曾提到某些time_point。什么时候是time_point?它取决于C ++实现还是由C ++标准定义的?或者它是将事件设定为1970年1月1日UTC的事实上的标准?

1 个答案:

答案 0 :(得分:37)

它是clock引用的特定time_pointclock的实现的函数。该标准规定了三种不同的时钟:

  • 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_clocksteady_clock的类型别名。

在OS X上,high_resolution_clocksteady_clock的类型别名,steady_clock是自计算机启动以来的纳秒数(与UTC没有任何关系)。