匿名用户
是与UTC(不包括闰秒)同步的时钟。每隔一段时间(也许一天几次),它会被少量调整,以保持它与正确的时间一致。这通常是通过网络服务(如NTP)来完成的。这些调整通常以微秒为单位,但在时间上可以向前或向后调整。这个时钟的时间戳实际上有可能(虽然不太可能也不常见)以微小的量向后倒退。除非被管理员滥用,不会按总金额跳转,例如由于夏令时或更改计算机的本地时区,因为它总是跟踪UTC。
就像秒表。它与任何时间标准都没有关系。它一直在滴答作响。它的时间可能不是很完美(没有一个时钟是真的)。但绝不会调整,特别是不会向后调整。它非常适合对短代码进行计时。但是由于它从未被调整过,因此它可能会随着时间的推移而相对于漂移,而是被调整为与UTC保持同步的。
这可以归结为以下事实:最适合对短持续时间进行计时。它通常还具有纳秒分辨率,尽管这不是必需的。最适合对“长”时间进行计时,因为“长”非常模糊。当然,几个小时或几天都算“长”,一秒钟以下的时间就不算“长”了。如果您需要将时间戳与人类可读的时间(例如民用日历上的date/time)相关联,是唯一的选择。
允许作为或的类型别名,实际上总是这样。但有些平台别名为,有些平台别名为。因此,最好直接选择或,这样您就知道您得到的是什么。
虽然没有指定,但通常限制为一秒的分辨率。因此它完全不能用于需要亚秒精度的情况。否则跟踪UTC(不包括闰秒),就像一样。
跟踪处理器时间,而不是物理时间。也就是说,当您的线程不忙着做某事,而操作系统已将其驻留时,的测量值将不会反映在停机期间的时间增长。如果这是您需要测量的,那么这将非常有用。如果您在使用它时没有意识到您正在测量的是处理器时间,那么这将是非常令人惊讶的。
C++20将另外四个时钟添加到/code>库:
就像一样,只是它计算闰秒。当您需要减去跨越闰秒插入点的两个测量自1958-01-01 00:00:00以来的秒数,并在此日期的UTC之前偏移10秒。它没有闰秒,但是每把闰秒插入到UTC中,TAI和UTC的历法表示就会再偏离一秒。
对GPS时间系统进行建模。它从世界协调时1980年1月的第一个星期日00:00:00算起,以秒为单位。与TAI一样,每向UTC插入一个闰秒,GPS和UTC的历法表示就会再发散一秒。由于GPS和TAI处理UTC闰秒的方式相似,GPS的历法表示总是落后于TAI 19秒。
是库使用的时钟,它产生了由别名的。
可以在C++20中使用一个名为的新的命名cast,在,,,和的之间进行转换。例如:
auto tp = clock_cast<system_clock>(last_write_time("some_path/some_file.xxx"));
的类型是基于的,其类型(精度)与相同。