IE中的JavaScript问题?
我在IE中显示日期时遇到了问题,下面是我试图在UI中显示inStoreDate和firstMarkDownDate日期的JSON结构。它在FF和Chrome中运行良好,但我在访问IE时遇到了问题。在IE中,它显示为NaNIE中的JavaScript问题?,javascript,date,Javascript,Date,我在IE中显示日期时遇到了问题,下面是我试图在UI中显示inStoreDate和firstMarkDownDate日期的JSON结构。它在FF和Chrome中运行良好,但我在访问IE时遇到了问题。在IE中,它显示为NaN "data":[ { "Id": "123", "inDate": [ 2012, 12, 17 ] } ] 我正在使用以下日期格式功能在显示之前格式化日期 formatDate: functio
"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);
根据,没有规范化的方法将对象作为参数传递给日期函数
您很可能需要更改代码以将年、月和日传递给函数,如下所示:
self.inStoreDate = formatDateWithZero(data.inStoreDate[0], data.inStoreDate[1], data.inStoreDate[2]);
。。。或者更新功能以获取数组,但从中提取日期构造函数的值:
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);
工作JSFIDLE:您正在向日期构造函数传递一个数组,这是问题的原因。作为所有对象的数组将被字符串化,然后在输入日期构造函数时被解析为字符串-然而IE不识别格式2012,12,17为有效日期,而Chrome则识别 相反,应分别传递三个单个值:
var date = new Date(longValue[0], longValue[1], longValue[2]);
您对哪个IE版本有问题?@Teemu:从IE7到IE10的所有IE版本这一个我尝试过,但在某些情况下,我可能需要使用相同的formatDateWithZero函数来格式化longValue。这就是我在formatDateWithZero函数中使用new date转换日期的原因。只使用ZeroData.inStoreDate.join“/”;转换FormatDate会更简单吗@蒂姆:好主意,那也行。它甚至不应该受到时区问题的影响,但我不喜欢在数字已经可用时转换成字符串并解析回数字。