2012年,这里有一个关于SO的问题,.NET的DateTime是否能够识别闰秒。 [1] 答案是否定的。
文档仍然明确指出事实并非如此。 [2]
但是,Windows Server 2019 和 Windows 10 October 2018 更新Windows本身闰秒意识。 [3]
这就引出了一个问题:.NET 现在本质上能够感知闰秒吗?更具体地说:我可以让我的DateTime
结构也通过某种方式选择加入来意识到秒级?
Edit:
来自标题为“Quest:在 Windows 上编写闰秒感知应用程序”的 MS Word 文档 [4](由我强调):
已知问题:已知某些框架会错误地计算时间
发生闰秒后。例如,.NET Framework 使用其
自己的内部逻辑来确定现在是什么时间。它的逻辑不
考虑闰秒。所以在引入闰秒之后
操作系统“System.DateTime.Now.ToString()”的输出将
比本地系统时间领先一秒。(我们正在与
.NET 框架团队对此的看法。)
并来自[5]:
已知某些应用程序会通过假设来错误地计算时间
一分钟总有 60 秒。由于闰秒可以
改变这种行为,他们会不正确地记录这段时间的时间
事件。例如(在撰写本文时):
.NET框架使用
它自己的内部逻辑来确定现在是什么时间和不是什么时间
考虑闰秒。因此,PowerShell 依赖于
.NET Framework,使用时不会报告第61秒(数字60)
获取日期
事件查看器:事件日期将不正确
记录了。但是,事件元数据将正确记录系统
时间(显示第 60 秒)。
注意:这些团队正在努力更新他们的软件以供使用
处理闰秒时更合适的数学.
因此,.NET 似乎将在未来某个时候意识到闰秒。因此我不会将此作为解决方案发布。
[1] .Net 的 DateTime 方法能够识别闰秒吗? https://stackoverflow.com/questions/8760674/are-nets-datetime-methods-capable-of-recognising-a-leap-second
[2]
[3] https://support.microsoft.com/en-us/help/2722715/support-for-the-leap-second https://support.microsoft.com/en-us/help/2722715/support-for-the-leap-second
[4] https://aka.ms/Dev-LeapSecond https://aka.ms/Dev-LeapSecond(微软Word)
[5] https://aka.ms/ITPro-LeapSecond https://aka.ms/ITPro-LeapSecond(微软Word)