【发布时间】:2014-07-28 10:15:40
【问题描述】:
我需要在 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 = 1997 年 4 月 1 日星期二 00:00:00 GMT+0200(耶路撒冷标准时间)(即 1997 年 1 月 4 日)
---endDate = Thu Jul 26 114 00:00:00 GMT+0200(耶路撒冷标准时间)(即 26/07/2014)
你看到了吗? startDate 比 endDate 小,对吧?
但是:
---endDate.getTime() 返回:-58551904800000
---startTime.getTime() 返回:859845600000
所以, endDate.getTime() >= startDate.getTime() 返回 false...
在其他情况下,效果很好:
---开始日期:星期六 7 月 21 日 114 00:00:00 GMT+0200(耶路撒冷标准时间)(即 21/07/2014)
---endDate:星期六 7 月 28 日 114 00:00:00 GMT+0200(耶路撒冷标准时间)(即 28/07/2014)
---startDate.getTime() 返回-58552336800000
---endDate.getTime() 返回 -58551732000000
所以, endDate.getTime() >= startDate.getTime() 返回 true...
似乎 javascript 函数对于 2000 年之后的日期有另一种行为。
我该怎么办?哪个代码将匹配所有可选情况?
谢谢。
【问题讨论】:
标签: javascript date