首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript日期构造函数使用任意时间

Javascript日期构造函数使用任意时间
EN

Stack Overflow用户
提问于 2013-07-26 03:24:07
回答 1查看 253关注 0票数 1

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

代码语言:javascript
复制
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';

铬20.0。

代码语言:javascript
复制
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

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

顺便提一下,解决办法就在这里:https://stackoverflow.com/a/744134/86967

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-26 03:31:13

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

代码语言:javascript
复制
var d1=new Date("2013-10-09"), d2=new Date("2013-10-10");
console.log(d1+' '+d1.toUTCString());
console.log(d2+' '+d2.toUTCString());

产量:

2013年10月8日星期二格林尼治时间20:00-0400(东部夏令时间) Wed,2013年10月09 :00格林尼治时间2009年10月9日20:00 GMT-0400 (东部夏令时间)清华,2013年10月10日:00:00

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

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

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

标准日期格式可在15.9.1.15“ECMA规范”节中找到

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17872400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档