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不一致。