std::chrono 并且缺少(?)对负闰秒的支持
std::chrono and missing (?) support for negative leap seconds
C++20 为 std::chrono
添加了时区支持,其中包括 leap seconds。但是,似乎只支持闰秒插入,而不支持闰秒移除,即负闰秒。 (诚然,自 1972 年以来,只有正闰秒;但在过去几年中,漂移似乎已经逆转,未来几年似乎有可能出现负闰秒。)
从描述 std::chrono::leap_second
class 的方式可以明显看出这一点 - 无法区分正闰秒和负闰秒。
知道为什么 std::chrono
不支持这种可能性吗?这是优化还是某种错误?还是已经支持了,我错过了什么?
注意:MSVC 实现似乎具有允许负闰秒的非标准功能。
[time.zone.leap.members]/2
实际上确实指定了负闰秒。
Returns: +1s to indicate a positive leap second or -1s to indicate a negative leap second.
[Note 1: All leap seconds inserted up through 2019 were positive leap seconds. — end note]
当标准谈到插入闰秒时,闰秒可能是负数,这与删除是一样的。
注意:我不确定这是 C++23 的新内容还是 C++20 的新内容,我现在没有 C++20 草案的副本。
C++20 为 std::chrono
添加了时区支持,其中包括 leap seconds。但是,似乎只支持闰秒插入,而不支持闰秒移除,即负闰秒。 (诚然,自 1972 年以来,只有正闰秒;但在过去几年中,漂移似乎已经逆转,未来几年似乎有可能出现负闰秒。)
从描述 std::chrono::leap_second
class 的方式可以明显看出这一点 - 无法区分正闰秒和负闰秒。
知道为什么 std::chrono
不支持这种可能性吗?这是优化还是某种错误?还是已经支持了,我错过了什么?
注意:MSVC 实现似乎具有允许负闰秒的非标准功能。
[time.zone.leap.members]/2
实际上确实指定了负闰秒。
Returns: +1s to indicate a positive leap second or -1s to indicate a negative leap second. [Note 1: All leap seconds inserted up through 2019 were positive leap seconds. — end note]
当标准谈到插入闰秒时,闰秒可能是负数,这与删除是一样的。
注意:我不确定这是 C++23 的新内容还是 C++20 的新内容,我现在没有 C++20 草案的副本。