Javascript 将JSON日期字符串转换为正确的日期对象

Javascript 将JSON日期字符串转换为正确的日期对象,javascript,Javascript,可能重复: 我认为这应该很简单,但结果却令人惊讶地乏味 从WEB API中,我通过ajax接收到selected对象,其属性之一是InspectionDate-Time字符串,如2012-05-14T00:00:00 在javascript中,我使用以下代码来获得正确的日期对象 selected.JsInspectionDate = new Date(selected.InspectionDate); 但是JsInspectionDate显示 2012/05/14 00:00 in fire

可能重复:

我认为这应该很简单,但结果却令人惊讶地乏味

从WEB API中,我通过ajax接收到
selected
对象,其属性之一是InspectionDate-Time字符串,如
2012-05-14T00:00:00

在javascript中,我使用以下代码来获得正确的日期对象

selected.JsInspectionDate = new Date(selected.InspectionDate);
但是JsInspectionDate显示

2012/05/14 00:00 in firefox, 
2012/05/13 20:00 in chrome and 
NAN in IE9
适用于
2012-05-14T00:00:00。

有人能告诉我为什么会出现这个问题吗?如何解决这个问题?我只想在所有浏览器中显示为firefox。

执行以下操作:

new Date(selected.InspectionDate + "Z")
理由:你的约会是正式的。时区指示符,如UTC的一个非常短的时区指示符
“Z”
,可以工作

注意IE可能不理解ISO 8601日期。所有的赌注都输光了。在这种情况下,最好使用。

var selectedDate='2012-05-14T00:00:00';
var formattedDate=新日期(selectedDate.substr(0,selectedDate.indexOf('T'));

document.write(formattedDate.getFullYear()+'/'+(formattedDate.getMonth()更新:

首先,正如有人建议的那样,我在引用date.js之后尝试了以下内容

selected.JsInspectionDate = Date.parse(selected.InspectionDate);
它似乎可以工作,但后来我发现这还不够,因为JSON日期字符串的格式可以是
2012-05-14T00:00:00.0539
date.js也无法处理

所以我的解决办法是

function dateParse(str) {
    var arr = str.split('.');
    return Date.parse(arr[0]);
}
...
selected.JsInspectionDate = dateParse(selected.InspectionDate);

看起来像是时区问题。相差4小时,你住在东海岸吗?请参阅:@MikeRobinson是的,我在东海岸时区,并尝试
新日期(selected.InspectionDate+“Z”)
。这修复了时区。但这可能对IE不起作用。是的,datejs是一种方式。现在一切都很和谐。老实说,我不知道datejs是必需的。谢谢你的回答。这会丢弃时间部分。为什么要重新发明轮子?
function dateParse(str) {
    var arr = str.split('.');
    return Date.parse(arr[0]);
}
...
selected.JsInspectionDate = dateParse(selected.InspectionDate);