javascript - C# Javascript 日期/时间不匹配

标签 javascript c#

Chrome 开发控制台中的以下 js 代码。

new Date(1560780000000)

产量

Tue Jun 18 2019 00:00:00 GMT+1000 (Australian Eastern Standard Time)

但是在同一台机器上的 C# 中,这会产生

new DateTime(1970, 1, 1).AddMilliseconds(1560780000000);

17/06/2019 14:00:00

使用

new DateTime(1970, 1, 1).ToLocalTime().AddMilliseconds(1560780000000);

产量

18/06/2019 01:00:00

距离日期还有一个小时。我正在尝试将 JS 日期准确地转换为 C# DateTime。我无法更改 DateTime 方法的签名,有人可以帮忙吗?

KH

最佳答案

这给了我相同的结果:

new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(1560780000000)

或者这个

new DateTime(1970, 1, 1).AddMilliseconds(1560780000000).ToLocalTime()

它们并非 100% 等效,但第二个将创建类型为 Unspecified 的日期当您调用 ToLocalTime() 时,假定为 UTC .

调用 ToLocalTime() 的区别之前或之后AddMilliseconds()看来是在夏令时。根据日期的不同,相同的本地时间会有不同的解释。因此,我假设您应该始终以 UTC 进行所有计算,并且仅转换为本地时间以进行最终检查。

问题是你增加了毫秒数,使得夏令时会产生影响(我认为)。

更多详情here .

关于javascript - C# Javascript 日期/时间不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55276213/

相关文章:

c# - Windows 更新 "file modified"时间戳需要什么?

c# - 查找 RichTextBox 中的所有图像

javascript - 仅消除双斜线和附加斜线并用一个斜线替换

javascript - PHP 每周更改文本

javascript - IE7 和可能的 IE8,将只运行*一些* JavaScript

javascript - 如何使用 .map 和 for 循环编写列和行

c# - 为什么原来的任务在 ContinueWith else 时被取消了?

javascript - UIWebView - 调试 javascript

c# - 用于编码 HTML Id 括号的标准标记?

javascript - Sitecore - 字段未检测为已修改。如何强制显示保存提示?