通过 Win 10 Oct 2018 更新,Windows 可以感知闰秒。现在.NET 的DateTime 也是如此吗?

2024-02-02

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)


[H]这里有一些说明 .NET(版本 4.7.2)如何在 支持闰秒的 Windows 版本(即 Windows 10 RS5 发布):

DateTime (DT) 和 DateTimeOffset (DTO) 的方式没有改变 存储时间单位以及如何对这些单位进行操作。这些类型只是 存储刻度,刻度为 100 纳秒。当之间转换时 刻度和日期/时间部分(例如年、月、日、时、分、秒、 毫秒)它总是假设分钟是 60 秒并且不能 61秒。即在刻度或时间中不计算闰秒 转换。

当调用 DT 和 DTO 上的 Now 属性时,我们最终会得到 调用 Windows API(例如 GetSystemTimeAsFileTime)。 GetSystemTimeAsFileTime 在那里计算闰秒。所以,.NET 在支持闰秒的系统上运行时执行额外的步骤 通过调用更多 Windows API 来获取准确的时间,该 API 可以报告 系统时间以确保 .NET 报告的时间与 系统。 .NET 仍然调用 GetSystemTimeAsFileTime 获得更精确的时间(精度为 100 纳秒)。

以防万一 Windows 向我们报告第二个数字 60(这是闰秒),.NET 将假设这是该分钟的最后一秒并将其用作 第二个 59 使其与 DT 和 DTO 等这些类型无缝协作 不知道闰秒。

如果有人尝试创建 DT 或 DTO 闰秒 (60),.NET 将首先通过调用 Windows API 检查是否符合 是有效的闰秒,然后将其转换为秒数 59。如果是 无效的闰秒,那么我们将抛出异常。

.NET 没有改变 DT和DTO如何工作以保证应用程序兼容性 知道许多用户在他们的代码中做了相同的假设 总是有分钟是 60 秒。并在不同的系统中勾选 不能表示不同的时间。如果您还有其他问题,请告诉我 或者您需要更多说明

Source: https://github.com/dotnet/dotnet-api-docs/issues/966#issuecomment-434440807 https://github.com/dotnet/dotnet-api-docs/issues/966#issuecomment-434440807

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Win 10 Oct 2018 更新,Windows 可以感知闰秒。现在.NET 的DateTime 也是如此吗? 的相关文章

  • 无法启动 Windows 服务,错误 1064

    我编写了一个在 Win10 上运行的 Windows 服务 它运行得非常好 直到我决定对其进行一些更改 我重写了一些逻辑 在调试和发布配置中进行了测试 一切都很好 然后 我使用卸载了当前版本的服务installutil exe u serv
  • C# 中 DLL 和命名空间的关系

    这里有一个高级问题 今天我花了很多时间自学基本的高级概念 例如 API 静态和动态库 DLL 以及 C 中的编组 获得所有这些知识让我想到了一个看起来非常基本的问题 并且可能表明我对这些概念的理解存在漏洞 我知道的 DLL 可能包含类 这些
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 如何打开 Windows 资源管理器窗口并选择特定文件夹

    我有一个 winform 应用程序 这个 winform 应用程序创建了几个文件 我想在我的应用程序中实现 查找目标 功能来显示这些文件 这些文件位于同一文件夹中 看图片 假设我创建了几个文件 C Test 文件夹 该文件夹包含以下文件 C
  • 根据 VS2008 中的构建配置排除整个文件

    我的项目有三种不同的配置 这三种配置不需要将所有文件构建到应用程序中 实际上 我更希望能够从构建中排除这些文件 这将使我的应用程序更加轻量级 我正在寻找的是 if MYCONFIG or if DEBUG声明但用于文件 我已经读到这可以通过
  • Ruby 中的 DateTime.parse() 是否依赖于语言环境?

    我想知道以下示例的输出 解析时01 03 它会被解决为Mar 1st or Jan 3rd Ruby 不依赖于语言环境 因为红宝石是一个服务器端语言而不是客户端像 JavaScript 一样的语言 Ruby 使用系统时钟yourWeb 应用
  • C# 中的空“if”语句是否会导致错误或警告?

    让我从一个现实生活中的例子开始 顾客 Alex 刚刚注意到 RemovalProcessor 第 138 行有一些奇怪的东西 if Session Handler ExecutePrefetchTasks null Session Exec
  • 从 .net 应用程序登录 OpenID 站点

    我一直在考虑编写一个小工具来登录 SO 并定期使用一些主题 当前信息更新我的个人资料信息 例如我最新的博客文章或我需要帮助的问题等 为了让它工作 我需要以某种方式从控制台应用程序登录到SO 是否有一个 Net 库可以简化使用原始 http
  • Quartz 与“反应式扩展”

    我正在寻找 C 的调度库 很长一段时间以来 我认为 唯一 的选择是 Quartz NET 它非常强大并且工作得很好 但是当我发现 Reactive Extensions RX http msdn microsoft com en us da
  • 如何使用AutoMapper按照类中定义的顺序映射对象?

    给定这两个对象 我使用非常不同的对象来更好地阐明 public class Car public string Brand get set public int Speed get set public class Apple public
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 在.rdlc报告的底部设置一个文本框

    我在 rdlc 报告中使用 tablix 有一个文本框 其中包含文本 签名 我想将此文本框放置在报告最后一页的底部 就在页脚之前 我已经用谷歌搜索了这个解决方案 但没有找到满意的结果 我的环境是VS2010 framework 4 0 有什
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 对于当前月份和日期但年份不同的日期,经过的月份计算未给出正确的结果

    我正在尝试计算自特定日期以来经过的月份 该函数工作正常 尽管如果我将今天的日期与过去的不同年份放在一起 它会给我一个月的差异 不到一个月 假设对于所有日期 该函数都运行良好 除了 如果今天是 2014 03 06 YYYY MM DD 并且
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML

随机推荐

  • “%H:%M”格式的时间增量

    有一种方法可以转换timedelta列转换为 H M 格式的字符串 我什至需要这个timedeltas超过24小时 我想这样做是为了制作一个可在类似电子表格的软件 excel google Sheets 中使用的 csv 文件 没有任何内置
  • Nodejs for 循环并等待循环完成

    我有以下代码 Marks all users which are reading the book with the bookId var markAsReading function bookId cb User find functio
  • 詹金斯转义 sed 命令

    有人可以为我在 Jenkins groovy 脚本中转义这个 sed shell 命令吗 So hard sh sed s AssemblyInformationalVersion 1 productVersion 3 g Assembly
  • 如何确定Android .so文件的ABI(即armeabi或armeabi-v7a)?

    我有一个由第三方供应商提供的 so 文件 该文件将包含在我的 Android 应用程序中 我无法访问源代码 也无法 轻松 联系供应商 有没有办法让我通过检查 so 文件来确定它是否是针对armeabi or armeabi v7a ABI
  • 如何使用其他表中的列/字段对 PostgreSQL 表进行集群

    我想根据其他表中的信息对 PostgreSQL 表进行聚类 想象一下两张桌子 foos id baz id name and bars foo id name bars foo id是一个外键引用foos id 我想对 bar 表进行聚类
  • 我可以访问来自不同语言环境的 android 资源吗?

    我的应用程序中有两个区域设置 我可以访问资源 例如来自不同语言环境的字符串数组而不更改当前语言环境吗 我的意思是 对于编码 我不喜欢在 设置 中更改它 更好的解决方案是 如果您使用的是 API 17 NonNull protected St
  • 在包安装期间执行 R 脚本

    希望这有一个简单的答案 但我还没有找到它 我正在编写一个 R 包 当安装在 Windows 上时 我希望它执行一个搜索系统文件的脚本 即list files path C Program Files 然后将该路径保存到包目录作为文本文件以供
  • 使用 jquery 将 html 表格转为 excel

    我有这个有效的 jquery 函数 但我需要添加一些东西 我在桌子上设置了一个过滤器来隐藏列 当我隐藏列并单击导出时 它无论如何都会使用所有字段 如何只导出未隐藏的表列 var write to excel function var uri
  • 使用 ggplot 在 R 中创建堆积百分比条形图

    我一直在寻找一种方法 能够根据受访者的性别分类 将堆积条形图响应显示为百分比值 我成功地使用变量 性别 进行填充创建了堆积条形图 但我希望该图显示该变量之间的比例 我知道使用 count sum count 和 scale y 可以更改 y
  • 使用WCF上传文件

    我需要一个 WCF 服务来由用户上传大文件 以下哪一项提供了更优化的性能 OperationContract public void UploadFile Stream inputsreaam or OperationContract pu
  • 在 EF6 中将匿名类型转换为 IEnumerable<>

    我正在使用实体框架开发 MVC 应用程序 我想从表中获取 5 列并将它们返回到一个IE可枚举类型 我的代码是 IEnumerable
  • T-SQL 将日期时间修剪为最近的日期?

    重复的 删除日期时间值 SQL Server 的时间部分的最佳方法是什么 https stackoverflow com questions 2775 我有一个列 用于跟踪使用日期时间创建事物的时间 但我想生成一个按天分组的报告 因此我需要
  • R 中具有两个单独值的词云

    作为 R 新手 我正在制作一个显示两个变量的词云 frequency and rating 使用通用表格 我希望按州显示假设的大学数量 字体 数字从大到小 以及假设的平均大学评级 1 绿色 良好 3 黄色 平均 5 红色 坏 我能够创建这个
  • 当 CreatePackageOnPublish 设置为 true 时,TFS Team Build 中的长路径出现问题。

    由于 TFS Team Build 在参数设置时创建的长路径 我们在构建时遇到了问题发布时创建包被设定为true 在目录中软件包临时表 见后图 包被存储 但我不明白为什么这个目录结构是必要的以及如何定制它 问题是部署或新的 TFS 构建会因
  • 如何在 JNI 中从 C++ 调用 Java 方法

    所以我正在编写一个使用大型 C 库的 Android 应用程序 我已经一切正常 以便 java 应用程序可以调用 c 委托方法 但我发现自己希望可以将消息从 c 记录到 Android 日志中 这对于java来说很容易 但是我不知道如何从c
  • CSS 计算不适用于 宽度

    我想要Cell A为剩下的两个单元格留出 100px 的空间 我会想calc 100 100px 就足够了 因为这在许多其他情况下都可以正常工作 为什么这里不起作用 table width 100 border collapse colla
  • 我可以使用 Deref 从 Other 继承特征实现吗?

    我有一个String newtype https doc rust lang org rust by example generics new types html ErrorMessage我用它来解决原型箱中的错误 我知道这是一个不好的做
  • PyCharm:如何推断运行时创建的对象的类型

    我正在尝试使用一个创建对象的库 并在运行时将它们添加到全局命名空间 PyCharm 无法找到对对象的引用 因为它们最初不在命名空间中 如何让 PyC harm 内省不抱怨 找不到参考 我不想用noinspection tags 示例代码 为
  • JTextArea 中的文本更改事件?如何?

    我一直在尝试为我的文本更改事件处理机制JTextArea 出于我的目的 每当文本的文本发生变化时就必须触发一个事件JTextArea 我尝试使用KeyListener接口 这是我的代码 txtArea addKeyListener new
  • 通过 Win 10 Oct 2018 更新,Windows 可以感知闰秒。现在.NET 的DateTime 也是如此吗?

    2012年 这里有一个关于SO的问题 NET的DateTime是否能够识别闰秒 1 答案是否定的 文档仍然明确指出事实并非如此 2 但是 Windows Server 2019 和 Windows 10 October 2018 更新Win