2012-09-20 69 views
3

简单功能Date.parse()中运行不正常Internet Explorer 8
我使用Date.parse()以格式"MM/DD/YYYY"验证日期。Date.parse()在IE 8中不起作用

  • _.isNaN(Date.parse("99/99/9999"))回报true - 日期无效
  • _.isNaN(Date.parse("01/01/1990"))回报false - 日期是否有效

但现在我试着在IE 8我的JavaScript,我很困惑。

  • "88/88/8888" - 此日期一切正常 - 日期无效。
  • "13/35/2012" - 无效日期 但Date.parse("13/35/2012")仅在IE中解析此日期,并且不返回NaN

jsFiddle Demo

任何想法?

回答

0

我用我的方法日期验证

var isValidDate = function(dateAsString) 
    { 
     var parsedDate = Date.parse(dateAsString); 
     if (_.isNaN(parsedDate) || !_.isEqual(new Date(parsedDate).format("mm/dd/yyyy"), dateAsString)) 
     { 
     return false 
     } 

     return true 
    } 
3

标准JavaScript只接受RFC 2822日期,看起来不像那样。您必须编写自己的代码来分隔日期部分,将它们转换为数字,然后以这种方式制作实例。

Internet Explorer还支持ISO日期(2012-09-20 08:22),它实际上会解析“MM/DD/YYYY”日期。它是为你的“13/35/2012”日期做的,就JavaScript而言,这是一个完全有效的日期:2013年2月4日。JavaScript“修正”假日期;当年的第13个月是下一年的第一个月,并且该月的第35天(如果是1月,则为31天)是下个月的第四天。

基本上你期望Date解析器的行为与实际不同。

1

查看here,herehere。通常Date.parse()不是一个跨浏览器解决方案。有很多插件和库可用,只是谷歌它。

相关问题