我在IE中显示日期时遇到问题,下面是我的JSON结构我试图在UI中显示inStoreDate和firstMarkDownDate日期。它在FF和Chrome中运行良好,但我在进入IE时遇到了问题。在IE中,它显示为NaN。
"data":[
{
"Id": "123",
"inDate": [
2012,
12,
17
]
}
]
我使用以下日期格式功能在显示之前格式化日期。
formatDate: function(longDate) {
var d = new Date(longDate);
return ('0' + (d.getMonth()+1)).slice(-2) + '/'
+ ('0' + (d.getDate())).slice(-2) + '/'
+ d.getFullYear();
}
formatDate(data.inDate);
答案 0 :(得分:0)
根据MSDN Date specification,没有规范化的方法将对象作为参数传递给Date()函数。
您很可能需要更改代码以将年,月和日传递给函数,如下所示:
self.inStoreDate = formatDateWithZero(data.inStoreDate[0], data.inStoreDate[1], data.inStoreDate[2]);
...或者更新你的功能以获取数组但是从Date构造函数中提取它们的值:
formatDateWithZero: function(longValue) {
var date = new Date(longValue[0], longValue[1], longValue[2]);
return ('0' + (date.getMonth()+1)).slice(-2) + '/'
+ ('0' + (date.getDate())).slice(-2) + '/'
+ date.getFullYear();
}
self.inStoreDate = formatDateWithZero(data.inStoreDate);
使用JSFiddle:http://jsfiddle.net/pt75S/2/
答案 1 :(得分:0)
您将数组传递给Date
构造函数,这是导致问题的原因。数组(作为所有对象)将被字符串化,然后在送入Date
构造函数时将其解析为字符串 - 但IE不会将格式"2012,12,17"
识别为Chrome的有效日期。
相反,您应该分别传递三个单值:
var date = new Date(longValue[0], longValue[1], longValue[2]);