0

我有这个在 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");
    }
}

例如,此函数接收 a10-JUL-13和 a 20-JUL-13

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

4

2 回答 2

1

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

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

http://jsfiddle.net/ZDtVv/1/

于 2013-07-10T20:35:56.167 回答
0

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

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

于 2013-07-10T20:37:33.297 回答