什么时候是std :: chrono时代?

Pao*_*o M 25 c++ epoch c++11 c++-chrono

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

How*_*ant 40

它是指具体clock的功能time_point和实现的功能clock.该标准规定了三种不同的时钟:

  • system_clock
  • steady_clock
  • high_resolution_clock

并且标准没有指定任何这些时钟的纪元.

程序员(你)也可以创作他们自己的时钟,这可能会或可能不会指定一个时代.

有一个事实上(非官方)的标准,它std::chrono::system_clock::time_point有一个与Unix时间一致的纪元.这被定义为自1970年1月1日星期四00:00:00协调世界时(UTC)以来经过的持续时间,不计算闰秒.

Fwiw,这是一个利用这个事实标准的日期/时间库.

其他两个std指定的时钟没有事实上的标准.此外high_resolution_clock被允许为任何一个类型别名system_clocksteady_clock.

在OS X上,high_resolution_clock是一个类型别名steady_clock,steady_clock是计算机启动后的纳秒数(与UTC没有任何关系).

  • 没什么官方的.这是一个做很多事情的提案,其中一个是标准化`system_clock`的时代:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0355r1. html但它只是一个提案,并不可能比2020年更早生效.它的成功几率可能不到50%.我已经和VS,gcc和clang的当前维护者交谈,并且已经达成了非正式协议,他们不会改变他们的`system_clock`时代.尽管Stephan Lavavej在此公布了其他信息:http://www.youtube.com/watch?v = P32hvk8b13M&t = 54m21s (4认同)