我以我的应用程序的日期格式为例如。
2013-05-01T00:00:00
我将此转换为日期
var d = '2013-05-01T00:00:00'
var result = new Date(d);
将result
作为NaN
当我这样做时,
var result = new Date(d.replace(/-/g, '/'));
获得结果,
Tue Apr 30 22:30:00 UTC+0530 2013
这可能是我在1天前获得约会的原因..
答案 0 :(得分:0)
你应该总是自己解析日期字符串,浏览器是非常糟糕的。例如,一些浏览器会对待2013-05-01T00:00:00'作为UTC,其他人作为本地。它应该是treated as UTC(因为缺少时区),所以:
function parseDateString(s) {
s = s.match(/\d+/g);
return new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5], (s[6] || 0));
}
将使用以上值作为UTC创建日期对象,并根据当前系统设置创建时区偏移量。因此,如果您当前的时区是UTC + 0530,那么您应该得到相当于:
2013-05-01T05:30:00+0530
但是你似乎得到了UTC-0130的值。我对此一无所知。
哦,当你这样做时:
new Date(d.replace(/-/g, '/'));
你完全修改了字符串,所以它不是ISO 8601字符串,你完全受制于依赖于实现的日期解析器(即每种实现都可能不同,如果可能的话)。