2012-09-20 110 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()不是一個跨瀏覽器解決方案。有很多插件和庫可用,只是谷歌它。

相關問題