Javascript日期字符串构造错误的日期

时间:2013-09-12 21:03:18

标签: javascript jquery date

您好我正在尝试使用字符串构建一个javascript日期对象,但它会一直构成错误的一天。它总是构成一天落后的一天。这是我的代码

var date = new Date('2006-05-17');

我想要的日期是

Wednesday May 17 2006 00:00:00 GMT-0700 (PDT)

但我得到了

Tue May 16 2006 17:00:00 GMT-0700 (PDT)

3 个答案:

答案 0 :(得分:9)

将日期作为字符串传递时,实现是特定于浏览器的。 大多数浏览器将破折号解释为时间以UTC为单位。如果您有一个与UTC(您这样做)的负偏移量,它将出现在上一个当地日。

如果您想要本地日期,请尝试使用斜杠,如下所示:

var date = new Date('2006/05/17');

当然,如果你不必从字符串中解析,你可以改为传递单独的数字参数,只要注意数字传递时月数是零的。

var date = new Date(2006,4,17);

但是,如果您有字符串,并且希望将这些字符串解析为日期的一致性,那么请使用moment.js

var m = moment('2006-05-17','YYYY-MM-DD');
m.format(); // or any of the other output functions

答案 1 :(得分:0)

从“05”

中删除前置零

答案 2 :(得分:0)

实际发生的是解析器将您的破折号解释为ISO-8601字符串的START,格式为“YYYY-MM-DDTHH:mm:ss.sssZ”,默认情况下为UTC时间(因此,尾随'Z')。

您也可以使用“toISOString()”日期函数生成此类日期。 http://www.w3schools.com/jsref/jsref_toisostring.asp

在Chrome中(在IE 10中不起作用)如果您将“00:00”或“00:00:00”添加到您的日期(没有'T'),那么它将不再是UTC,无论破折号如何。 ;)