考虑以下代码:
var from = new Date(document.getElementById("from").value);
var to = new Date(document.getElementById("to").value);
var yeardate = new Date(from.setMonth(from.getMonth()+12));
if (from.getTime() > to.getTime()) {
alert(from.getTime() > to.getTime());
}
这些字段是html5日期字段。
例如我用这个:
from: 2015-06-30
to: 2018-07-31
输出false,但是当我这样做时:
from: 2015-06-30
to: 2015-07-31
它输出true而它仍然应该是假的,因为06-30不大于07-31。
看起来它只检查一年,我该如何解决这个问题?
编辑:
根据@Laxmikant Dange的建议,我尝试了以下内容。
alert((new Date('2015-06-30').getTime() > new Date('2015-07-31').getTime()));
它现在返回false,但是当我将对象存储到变量时,如下所示:
var from = new Date('2015-06-30');
var to = new Date('2015-07-31');
alert(from.getTime() > to.getTime());
再次返回true
。
答案 0 :(得分:0)
检查日期元素的值是什么,可能有问题。这是你的值,它在两种情况下都返回false。
getTime()方法返回的值是自1970年1月1日00:00:00 UTC以来的毫秒数。 Here是参考。
所以它不是只比较几年。
console.log("case 1",new Date('2015-06-30').getTime() > new Date('2018-07-31').getTime());
console.log("case 2",new Date('2015-06-30').getTime() > new Date('2015-07-31').getTime());
代码中的问题在于此行。
var yeardate = new Date(from.setMonth(from.getMonth()+12));
你正在增加12个月。 注释这一行,你会得到预期的结果。