gpt4 book ai didi

javascript - 为什么 'new Date()' 会错误地解析字符串日期?

转载 作者:行者123 更新时间:2023-11-29 20:55:02 37 4
gpt4 key购买 nike

当我尝试解析 3 月的字符串日期时,new Date() 无法正常工作。但是当我的字符串日期是从四月开始时,一切都很好。我不明白这一点。为什么会这样?

var a = '2018-03-07T00:00+03:00';
console.log(a);
console.log(new Date(a).toString());
var b = '2018-04-07T00:00+03:00';
console.log(b);
console.log(new Date(b).toString());

这是 Google Chrome 浏览器的屏幕截图:

screenshot from Google Chrome browser

最佳答案

正如其他人所指出的,这是由于您所在时区的夏令时。请注意屏幕截图中的时间:a 的时间是 23b 的时间是午夜 00,这显然告诉你发生了什么。

如果要解析没有夏令时的值,可以使用 GMT+0 时区,方法是将时区 +3:00 替换为 z。但是,您需要通过添加/减去时区的小时数(在您的情况下为 -3)来手动更正时间。这是一个例子:

var a = '2018-03-07T00:00+03:00';
a.replace('+03:00', 'z');
a = new Date(a);
a.setHours(a.getHours() - 3); //3 is your time-zone
console.log(a.toUTCString());
var b = '2018-04-07T00:00+03:00';
b.replace('+03:00', 'z');
b = new Date(b);
b.setHours(b.getHours() - 3); //3 is your time-zone
console.log(b.toUTCString());

显然,此代码仅适用于一个已知时区。如果您的值可以位于不同的时区,则无需替换,您需要从字符串中提取时区(此格式的最后 6 个字符,GMT-0 除外,即 z),然后使用它来更正 setHours() 行上的时间。

关于javascript - 为什么 'new Date()' 会错误地解析字符串日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49781147/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com