gpt4 book ai didi

Javascript Date 构造函数使用任意时间

转载 作者:行者123 更新时间:2023-11-30 17:57:14 25 4
gpt4 key购买 nike

当我从一个字符串构造一个日期对象时,我得到了令人困惑的结果。如果我不指定时间,它似乎是任意选择的(但可重复)。

var d1=new Date("2013-10-9"), d2=new Date("2013-10-10");
output = d1+' '+d1.toUTCString()+'<br>\n';
output += d2+' '+d2.toUTCString()+'<br>\n';

Chrome 20.0...

Wed Oct 09 2013 00:00:00 GMT-0600 (MDT) Wed, 09 Oct 2013 06:00:00 GMT
Wed Oct 09 2013 18:00:00 GMT-0600 (MDT) Thu, 10 Oct 2013 00:00:00 GMT

为什么 Chromium 会在 10 月 10 日选择不同的时间?

顺便说一句,解决方法在这里:https://stackoverflow.com/a/744134/86967

最佳答案

这与您使用的日期字符串的格式有关。如果您指定 2013-10-09(注意当天额外的 0),那么它会按预期工作。如果您使用 2 位数字表示日期和月份,那么您就遵循了 ECMA 规范。

var d1=new Date("2013-10-09"), d2=new Date("2013-10-10");
console.log(d1+' '+d1.toUTCString());
console.log(d2+' '+d2.toUTCString());

产量:

Tue Oct 08 2013 20:00:00 GMT-0400 (Eastern Daylight Time) Wed, 09 Oct 2013 00:00:00 GMT 
Wed Oct 09 2013 20:00:00 GMT-0400 (Eastern Daylight Time) Thu, 10 Oct 2013 00:00:00 GMT

我相信他们使用的代码可以在这里找到:

https://github.com/WebKit/webkit/blob/master/Source/WTF/wtf/DateMath.cpp

当您提供 ECMA 日期时,它将使用 parseES5DateFromNullTerminatedCharacters 方法来解析日期,但是当您使用非标准日期格式时,它将使用 parseDateFromNullTerminatedCharacters方法。我对 webkit 代码不是很熟悉,所以我可能是错的,但这是基于我对解析逻辑的阅读。

标准日期格式可以在15.9.1.15 of the ECMA Spec.部分找到

关于Javascript Date 构造函数使用任意时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872400/

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