首先尝试在IE 9控制台中:
new Date('2013-10-24T07:32:53')
Thu Oct 24 07:32:53 UTC+0200 2013
按预期返回
接下来尝试使用FireFox 24控制台:
new Date('2013-10-24T07:32:53')
Date {Thu Oct 24 2013 07:32:53 GMT+0200 (Central Europe Standard Time)}
然后我进入Chrome 30控制台:
new Date('2013-10-24T07:32:53')
Thu Oct 24 2013 09:32:53 GMT+0200 (Central Europe Daylight Time)
但是时间 09 ,应该 07 。
这是chrome中的错误还是我在这里做错了什么?
我不能使用除了这个'2013-10-24T07:32:53'之外的任何其他格式,我从C#获得JSON。
我需要获取此时间戳的小时数,getHours
我在Chrome中获得了incorect值。
解决方案:
var inputHour = input.split('T')[1];
inputHour = inputHour.substring(0, 2);
答案 0 :(得分:6)
它没有错误。日期解析功能的实现因浏览器而异。 dateString 的格式也是如此。
然而,这种格式似乎在... link:
之间有效 new Date("October 13, 1975 11:13:00")
如果可能,请尝试使用
new Date(year, month, day, hours, minutes, seconds, milliseconds)
保证结果。
关于您的格式,请尝试自行解析。类似的东西:
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);
注意(感谢RobG):上面使用的Date构造函数预计月份为0 - 11&因为10月是10日期字符串,所以必须在将月份传递给构造函数之前修改月份。
答案 1 :(得分:2)
答案 2 :(得分:0)
假设:
var s = '2013-10-24T07:32:53';
在符合ES5标准的浏览器中,您可以这样做:
var d = new Date(s + 'Z');
但是为了兼容所有正在使用的浏览器,最好使用(假设日期为UTC):
function dateFromString(s) {
s = s.split(/\D/);
return new Date(Date.UTC(s[0],--s[1],s[2],s[3],s[4],s[5]));
}