我认为这应该很简单,但结果却非常乏味。
从WEB API,我通过ajax收到selected
个对象,其中一个属性是InspectionDate日期时间字符串,例如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中为所有浏览器显示。
答案 0 :(得分:2)
这样做:
new Date(selected.InspectionDate + "Z")
理由:您的约会日期为ISO 8601。像"Z"
这样的时区指示符,对于UTC来说非常短,可以工作。
注意! IE可能无法理解ISO 8601日期。所有赌注都已关闭。在这种情况下,最好使用datejs。
答案 1 :(得分:1)
<强>更新强>
首先如同一个人建议的那样,我在引用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);
答案 2 :(得分:0)
var selectedDate='2012-05-14T00:00:00';
var formatttedDate=new Date(selectedDate.substr(0,selectedDate.indexOf('T')));
document.write(formatttedDate.getFullYear()+'/'+(formatttedDate.getMonth()<10?'0'+formatttedDate.getMonth():formatttedDate.getMonth())+'/'+formatttedDate.getDay());