javascript - 将 DateTime 转换为 JavaScript 时不一致

标签 javascript asp.net-web-api

我有一个将 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

我预计行为应该始终是午夜,因为从服务器返回的日期始终是午夜。似乎所有最近的日期都正确解析,但是,过去的日期不正确。

最佳答案

The timezone can vary in some locales, for example, I'm UTC-0300, and on certain season shifts it becomes UTC-0200, so it indicates that your locale changed the offset too, making it display the time one hour lesser, basicaly because you locale adopted a different offset along the year.

下面的示例,我已将您的第一个示例更改为使用与第二个示例相同的日期和月份,以便证明旧日期与它无关。

console.log("Example One");
var strDate = new Date("1932-05-09T00:00:00-04:00");

console.log(strDate.toISOString());
console.log(strDate.toLocaleString());

console.log("--------------------------");
console.log("Example Two");

var strDate2 = new Date("2013-05-09T00:00:00-04:00");

console.log(strDate2.toISOString());
console.log(strDate2.toLocaleString());


关于UTC/Zulu time的进一步解释

它已经规范化了iso date到祖鲁日期(零偏移 iso date )。它仍然是相同的日期时间,但它已将时区偏移量转换为小时,使时区偏移量为零。

date      [2013-05-09]
separator [T]
time      [00:00:00]
offset    [-04:00]

基本方面是 00:00:00.000-04:0004:00:00.000Z 相同。

关于javascript - 将 DateTime 转换为 JavaScript 时不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53449600/

相关文章:

javascript - 如何防止ajax中给出的 header 值的可见性以进行身份​​验证

javascript - 使用 jquery 变量更新 html "value"

c# - web-api POST 正文对象始终为 null

javascript - 如何在单个 html 中为每个容器定义元标记?

在 chrome 中给出不同值的 javascript 代码

c# - 如何修复 webAPI 中不正确的操作路由

asp.net - 如何在由字符串构造的 xml 中显示 &

c# - 如何在不知道Key值的情况下读取Json数据

javascript - 窗口加载后在 <a> 标记上应用一些事件和操作()

javascript - Highcharts Heatmap colorAxis 停止渐变