Firefox和Chrome似乎再次以不同的方式解析日期

Firefox and Chrome again seem to parse dates differently

本文关键字:方式解 日期 Chrome Firefox      更新时间:2023-09-26

所以我的问题是:

new Date('01/32/1980') //January 32, 1980 (invalid)

在Chrome中运行此javascript会导致'Invalid Date'
在Firefox中运行此javascript,结果显示日期为1980年2月1日

我看到过很多问题,人们对不同浏览器的javascript日期解析器有不同的问题,但不是这个特殊的情况。

我需要在javascript中验证日期,但是像这样的东西在浏览器之间不像预期的那样工作:

if(isNaN(new Date('1/32/1980').getTime())){
    //I expect this to be a valid date
}else{
    //I expect this to be an invalid date
}

他们的方式Chrome解析'1/32/1980',一个无效的日期,这段代码工作并放到else块。在这个完全相同的场景中,Firefox显示valid并将其放入valid部分。

我错过了什么,有没有更好的方法来验证这个字符串?

使用RegEx的潜在答案响应非常混乱,仍然没有完全覆盖这一点。

我选择了一个更干净的解决方案,使用JQuery:

$.datepicker.parseDate('mm/dd/yy','1/32/1980')

我只是像这样把它包起来:

function isValidDate(strDate, strDateFormat){
    try{
        $.datepicker.parseDate(strFormat, strDate);
    } catch (e) {
        return false;
    }
    return true;
}

Jquery在所有浏览器中都会抛出一个"Invalid Date"异常。这正是我所需要的。当然,这意味着用于一个小部件,但它的逻辑是相当可靠的社区测试。