javascript - Date.parse() 在 IE 8 中不起作用

标签 javascript date

简单函数 Date.parse()Internet Explorer 8 中运行不佳。
我正在使用 Date.parse() 来验证格式为 "MM/DD/YYYY" 的日期。

  • _.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

有什么想法吗?

最佳答案

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

Internet Explorer 还支持 ISO 日期 (2012-09-20 08:22),它实际上会解析“MM/DD/YYYY”日期。它正在为您的“13/35/2012”日期执行此操作,就 JavaScript 而言,这是一个完全有效的日期:它是 2013 年 2 月 4 日。JavaScript“修复”了虚假日期;当年的第13个月是次年的第1个月,第35天(如果是1月,则为31天)是下个月的第4天。

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

关于javascript - Date.parse() 在 IE 8 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513441/

相关文章:

javascript - 通过比较另外两个 json 对象来创建一个 json 对象

javascript - 控制台.log( 变量 ); VS console.log( [variable] );/一个提供了另一个没有提供的信息?

php - 获取当前日期,给定 PHP 中的时区?

php - 将当前日期插入表中

php - 计算每周给出大量 NULL 的记录数

javascript - 在使用 setInterval 调用 x 次后执行函数

javascript - reveal.js 如何调整元素的大小?

javascript - 如何在 wordpress 中的某些特定外部链接中添加 rel=nofollow

C 从 FILE* 中读取带空格的格式化行

java - SimpleDateFormat 宽容导致意外行为