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

use*_*382 4 javascript jquery date

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

var date = new Date('2006-05-17');
Run Code Online (Sandbox Code Playgroud)

我想要的日期是

Wednesday May 17 2006 00:00:00 GMT-0700 (PDT)
Run Code Online (Sandbox Code Playgroud)

但相反,我得到了

Tue May 16 2006 17:00:00 GMT-0700 (PDT)
Run Code Online (Sandbox Code Playgroud)

Mat*_*int 9

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

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

var date = new Date('2006/05/17');
Run Code Online (Sandbox Code Playgroud)

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

var date = new Date(2006,4,17);
Run Code Online (Sandbox Code Playgroud)

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

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