我有这个非常简单的功能,不适用于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-13
和20-JUL-13
。
在IE浏览器中,我没有收到警报,在Chrome中,我确实收到警报。请参阅http://jsfiddle.net/ZDtVv/
答案 0 :(得分:1)
Date.parse
需要ISO日期,这需要全年。 Chrome和Firefox试图为您解决这个问题,您不应该依赖它。
// This works
compareDates({value: '10-JUL-2013'}, {value: '20-JUL-2013'})
答案 1 :(得分:0)
这些日期字符串不是有效的日期字符串,因此您将获得具有NaN作为其实际时间戳的Date对象。 NaN < NaN
测试错误。
根据规范,无效日期字符串的行为未定义; JavaScript实现可以将它们转换为NaN或使用它想要的任何启发式来解析它们。例如,那些日期可能是13年或1913年或1413年,这些都是每个规范的有效行为。