在IE中显示为NaN的日期?

时间:2012-11-13 05:40:48

标签: javascript

我知道这已经在线了,但我还是不太确定如何修改这段特殊的代码:

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();


}

dateString输出为Tue Nov 06 23:29:33 +0000 2012

2 个答案:

答案 0 :(得分:2)

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

由于Date对象构造不正确,因此date.getHours();date.getMinutes();等所有方法调用都返回NaN。

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

如果您想支持自定义格式基础数据解析,请查看 http://www.mattkruse.com/javascript/date/,它有一个很大的自定义方法getDateFromFormat(val,format),可以将特定格式的任何日期字符串转换为Date对象。请看看,看看是否有帮助。

答案 1 :(得分:0)

dateString的格式是什么?

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