Chrome无法在javascript中返回正确的小时数

Rum*_*lin 4 javascript time google-chrome

首先尝试在IE 9控制台中:

new Date('2013-10-24T07:32:53') 
Thu Oct 24 07:32:53 UTC+0200 2013 
Run Code Online (Sandbox Code Playgroud)

按预期返回

接下来尝试在FireFox 24控制台中:

new Date('2013-10-24T07:32:53')
Date {Thu Oct 24 2013 07:32:53 GMT+0200 (Central Europe Standard Time)}
Run Code Online (Sandbox Code Playgroud)

然后我进入Chrome 30控制台:

new Date('2013-10-24T07:32:53')
Thu Oct 24 2013 09:32:53 GMT+0200 (Central Europe Daylight Time)
Run Code Online (Sandbox Code Playgroud)

但时间是09,这应该是07.

这是chrome中的错误还是我在这里做错了什么?

我不能使用除了这个'2013-10-24T07:32:53'之外的任何其他格式,我从C#获得JSON.我需要得到这个时间戳的小时,getHours我得到Chrome中的incorect值.

解:

var inputHour = input.split('T')[1];
inputHour = inputHour.substring(0, 2);
Run Code Online (Sandbox Code Playgroud)

lox*_*xxy 6

它没有错误.日期解析函数的实现因浏览器而,因此它接受的dateString的格式也不同.

然而,这种格式似乎在... 链接:

 new Date("October 13, 1975 11:13:00")
Run Code Online (Sandbox Code Playgroud)

如果可能,请尝试使用

new Date(year, month, day, hours, minutes, seconds, milliseconds)
Run Code Online (Sandbox Code Playgroud)

保证结果.


关于你的格式,请尝试自己解析.就像是 :

var str = '2013-10-24T07:32:53'.split("T");
var date = str[0].split("-");
var time = str[1].split(":");

var myDate = new Date(date[0], date[1]-1, date[2], time[0], time[1], time[2], 0);
Run Code Online (Sandbox Code Playgroud)

注意(感谢RobG):上面使用的Date构造函数将月份预期为0 - 11,因为10月份是10,因为每个日期字符串,必须在将月份传递给构造函数之前修改月份.

参考.

  • 为什么不将字符串拆分为"T"并自己构造新的日期时间字符串... (2认同)