IE中的JavaScript日期NaN问题?

时间:2013-09-24 15:19:33

标签: javascript date

我在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);

2 个答案:

答案 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]);