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/