【发布时间】:2018-11-24 01:01:21
【问题描述】:
我有一个将DateTimeZoneHandling 设置为Local 的 ASP.NET webapi,当转换为 JavaScript 日期时,我得到了两个不同的结果。
示例 1
从服务器返回的日期1932-10-13T00:00:00-04:00
var strDate = new Date("1932-10-13T00:00:00-04:00");
strDate.toISOString(); // 1932-10-13T04:00:00.000Z
strDate.toLocaleString(); // 10/12/1932, 11:00:00 PM
示例 2
从服务器2013-05-09T00:00:00-04:00返回的日期
var strDate = new Date("2013-05-09T00:00:00-04:00");
strDate.toISOString(); // 2013-05-09T04:00:00.000Z
strDate.toLocaleString(); // 5/9/2013, 12:00:00 AM
我预期的行为应该始终是午夜,因为从服务器返回的日期始终是午夜。似乎所有最近的日期都正确解析,但是,过去的日期不正确。
【问题讨论】:
-
它们是 UTC-4 时区的午夜。 toISOString 将该日期和时间作为 UTC/Zulu 时间(最后是 z)返回,toLocaleString 告诉您您所在时区的日期和时间。
-
@HMR 为什么转换为当地时间的 1932-10-13T00:00:00-04:00 是 10/12/1932, 11:00:00 PM 和 2013-05 -09T00:00:00-04:00 转换 5/9/2013, 12:00:00 AM 但是?那是我不明白的部分。我的期望是他们都将在同一天的午夜,而不是前一天的晚上 11 点
-
时区和夏令时随着时间的推移发生了几次变化。
-
@HMR 有没有办法解释这些变化?
标签: javascript asp.net-web-api