4

我想将以yyyy-mm-ddThh:mm:ss形式给出的日期转换为 Javascript 日期。

第一次尝试:

var str = "2013-10-31T18:15:30";
var date = new Date(str)

返回2013 年 10 月 31 日星期四 18:15:30 GMT+0100 (CET)

第二次尝试:

var str = "2013-10-31T18:15:30";
var str_parts = str.split("T");
var date_parts = str_parts[0].split("-");
var time_parts = str_parts[1].split(":");
var date = new Date(date_parts[0], date_parts[1], date_parts[2], time_parts[0], time_parts[1], time_parts[2]);

返回2013 年 12 月 1 日星期日 18:15:30 GMT+0100 (CET)。我错过了什么吗?这不应该也返回Thu Oct 31 2013 18:15:30 GMT+0100 (CET)吗?不知何故,日期不正确,而时间合适。

对应的小提琴:http: //jsfiddle.net/4CLAj/2/

4

1 回答 1

0

在 Date 构造函数 Date(year,month,day,hour,minute,second) 中,月份从零开始,即一月为零。

所以对于第二次尝试:

var date = new Date(date_parts[0], Number(date_parts[1]) - 1, date_parts[2], time_parts[0], time_parts[1], time_parts[2]);

请参阅http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf第 15.9.1.4 节

于 2013-10-31T14:00:18.667 回答