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

时间:2015-06-03 20:24:06

标签: javascript google-chrome firefox

所以我的问题是:

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

在Chrome中运行此javascript会导致“无效日期”
在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显示有效并进入有效部分。

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

1 个答案:

答案 0 :(得分:0)

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会抛出一个"无效的日期"所有浏览器中的异常。这完全符合我的需要。当然,这是用于小部件,但它的逻辑是非常稳固的社区测试。