Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE中的JavaScript问题?_Javascript_Date - Fatal编程技术网

IE中的JavaScript问题?

IE中的JavaScript问题?,javascript,date,Javascript,Date,我在IE中显示日期时遇到了问题,下面是我试图在UI中显示inStoreDate和firstMarkDownDate日期的JSON结构。它在FF和Chrome中运行良好,但我在访问IE时遇到了问题。在IE中,它显示为NaN "data":[ { "Id": "123", "inDate": [ 2012, 12, 17 ] } ] 我正在使用以下日期格式功能在显示之前格式化日期 formatDate: functio

我在IE中显示日期时遇到了问题,下面是我试图在UI中显示inStoreDate和firstMarkDownDate日期的JSON结构。它在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);
根据,没有规范化的方法将对象作为参数传递给日期函数

您很可能需要更改代码以将年、月和日传递给函数,如下所示:

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会更简单吗@蒂姆:好主意,那也行。它甚至不应该受到时区问题的影响,但我不喜欢在数字已经可用时转换成字符串并解析回数字。