Javascript 在IE中以NaN的身份出现的日期?

Javascript 在IE中以NaN的身份出现的日期?,javascript,Javascript,我知道这已经在网上讨论过了,但我仍然不太确定如何修改这段特定的代码,不幸的是: timeCreated: function(dateString) { var date = new Date(dateString); var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November",

我知道这已经在网上讨论过了,但我仍然不太确定如何修改这段特定的代码,不幸的是:

timeCreated: function(dateString) {     
    var date = new Date(dateString);
    var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];

    var hh = date.getHours();
    var m = date.getMinutes();
    var dd = "AM";  
    var h = hh;

    if (h >= 12) {
        h = hh-12;
        dd = "PM";
    }
    if (h == 0) {
        h = 12;
    }

    return h + ':' + date.getMinutes().toString() + ' ' + dd + ' ' + monthNames[date.getMonth()] + ', ' + date.getDate().toString() + ', ' +  date.getFullYear().toString();


}

日期字符串输出为
11月06日星期二23:29:33+0000 2012

您的输入日期格式与任何标准格式都不匹配,因此
IE
无法解析它,即无法构造正确的日期对象。

由于未正确构造
Date
对象,因此所有方法调用,例如
Date.getHours()
date.getMinutes()正在返回NaN

如果您以可接受的格式使用日期字符串,例如dateString=“Nov 06 2012 23:29:33+0000”,则其工作正常。

如果您想支持自定义格式基础数据解析,请查看
,它有一个大的自定义方法
getDateFromFormat(val,format)
将特定格式的任何日期字符串转换为日期对象。请看一下,看看这是否有帮助

日期字符串的格式是什么


对解析日期字符串的内置支持因浏览器而异,从差到差。最好是手动解析字符串,将其转换为日期对象,然后从那里开始。如果您提供字符串格式,则可以提供进一步的帮助。

我在这方面遇到了很多问题,我找到的唯一“安全”解决方案是为
Date()
提供年、月等的单个值。您可以通过在日期字符串上适当地使用
.split()
来实现这一点。您可以从中获得确切的语法。@MartyWallace谢谢,我来看看这些示例。@YogendraSingh它在IE中输出为Nan。@YogendraSingh如我的问题所述,它的
Tue Nov 06 23:29:33+0000 2012
您的意思是这行
var date=new date(dateString)dateString
参数为
“Tue Nov 06 23:29:33+0000 2012”
时,code>将IE中的
date
变量设置为
NaN
?IE不使用这两个变量,这是应该手动解析日期字符串的原因之一。您建议的日期字符串格式与ECMA-262不一致。