日期比较仅比较年份

时间:2015-06-24 09:48:47

标签: javascript html5 date

考虑以下代码:

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

1 个答案:

答案 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个月。 注释这一行,你会得到预期的结果。