IE和Firefox上的JavaScript

IE和Firefox上的JavaScript,javascript,internet-explorer,firefox,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){

我有一个非常简单的函数,在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");
    }
}
功能比较(obj、fecha){
var date1=新日期(Date.parse(obj.value.replace(/-/g,“”)));
var date2=新日期(Date.parse(fecha.value.replace(/-/g,“”));
如果(日期1<日期2){
警报(“无效日期”);
}
}
例如,此函数接收
10-JUL-13
20-JUL-13


在IE中,我没有收到警报,在Chrome中,我收到警报。请参见日期。解析需要ISO日期,这需要全年。Chrome和Firefox会帮你找到答案,你不应该依赖它

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

请参见

这些日期字符串不是有效的日期字符串,因此您得到的日期对象的实际时间戳为NaN。而
NaN
测试为false


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

这在任何地方都不起作用,因为比较两个不同的对象永远不会返回真值,即使内容相同。你说“不起作用”是什么意思?会发生什么?有关更多信息,请参阅。@adeneo日期实例可以与
@adeneo进行比较,使用
on Dates将首先调用
valueOf()
,这将返回一个number@JuanMendes-确实如此,但突然间你会想“这是同一个日期吗”,你在做
date1==date2
,它总是失败,因为它不是同一个对象,因此,在比较日期之前总是调用
getTime()
,这是一个非常好的做法。因为规范说,基本上可以对无效的日期字符串执行任何操作,而Chrome使用的日期解析库恰好可以对这些特定字符串执行某些操作。不能保证它会在Chrome中继续工作。