我需要在javascript中比较日期。 经过多次尝试...... 我选择:
var endDate = new Date(secondDate.getYear(), secondDate.getMonth(), secondDate.getDate(), 0, 0, 0,0);
var startDate = new Date(firstDate.getYear(), firstDate.getMonth(), firstDate.getDate(), 0, 0, 0, 0);
if (endDate.getTime() >= startDate.getTime()) {
isValid = true;
}
else {
isValid = false;
}
在我的情况下:
--- startDate = Tue Apr 01 1997 00:00:00 GMT + 0200(耶路撒冷标准时间)(即01/04/1997)
--- endDate =星期四7月26日114 00:00:00 GMT + 0200(耶路撒冷标准时间)(即2014年7月26日)
你知道吗? startDate比endDate小,对吗?可是:
--- endDate.getTime()返回: -58551904800000
--- startTime.getTime()返回: 859845600000
所以, endDate.getTime()> = startDate.getTime()返回false ...
在其他情况下,效果很好:
--- startDate:星期六7月21日114 00:00:00 GMT + 0200(耶路撒冷标准时间)(即2014年7月21日)
--- endDate:星期六7月28日114 00:00:00 GMT + 0200(耶路撒冷标准时间)(即2014年7月28日)
--- startDate.getTime()返回 -58552336800000
--- endDate.getTime()返回 -58551732000000
所以, endDate.getTime()> = startDate.getTime()返回true ...
似乎javascript函数对2000年后的日期有另一种行为。
我该怎么办?哪些代码与所有可选情况相匹配?
感谢。
答案 0 :(得分:0)
显然,您的结束日期有问题:
Thu Jul 26 114 00:00:00 GMT+0200
并不意味着2014年7月21日,而是 21/07/114
根据the doc,以下是创建日期的两种正确方法:
var endDate = new Date(21, 6, 2014);
// Or a string corresponding to a version of ISO8601
var endDate = new Date('2014-07-21T00:00:00z+3');
答案 1 :(得分:0)
是的,就像ghusse说的那样,你的结束时间有一个问题,如果你修复它,所以它是2014年你会得到一个结果,如1406329200000而不是-58551904800000
答案 2 :(得分:0)
在我阅读了Josh和ghusse的答案和建议之后,我找到了一个解决方案:
使用getFullYear(),而不是getYear(),所有都可以使用O.K。