IE和Firefox上的JavaScript

时间:2013-07-10 20:19:10

标签: javascript internet-explorer firefox

我有这个非常简单的功能,不适用于Firefox或IE。只是想知道你是否有一些见解。

function compareDates(obj, fecha){
    var date1 = new Date( Date.parse(obj.value.replace(/-/g, " ")) );   
    var date2 = new Date( Date.parse(fecha.value.replace(/-/g, " ")) );

    if(date1 < date2){
        alert("Invalid Date");
    }
}

例如,此函数会收到10-JUL-1320-JUL-13

在IE浏览器中,我没有收到警报,在Chrome中,我确实收到警报。请参阅http://jsfiddle.net/ZDtVv/

2 个答案:

答案 0 :(得分:1)

Date.parse需要ISO日期,这需要全年。 Chrome和Firefox试图为您解决这个问题,您不应该依赖它。

// This works
compareDates({value: '10-JUL-2013'}, {value: '20-JUL-2013'})

请参阅http://jsfiddle.net/ZDtVv/1/

答案 1 :(得分:0)

这些日期字符串不是有效的日期字符串,因此您将获得具有NaN作为其实际时间戳的Date对象。 NaN < NaN测试错误。

根据规范,无效日期字符串的行为未定义; JavaScript实现可以将它们转换为NaN或使用它想要的任何启发式来解析它们。例如,那些日期可能是13年或1913年或1413年,这些都是每个规范的有效行为。