JavaScript日期比较忽略时间戳值

5
仅比较日期而忽略时间戳的最简单方法是什么?我有两个日期,其中一个firstDate来自数据库(转换为JavaScript日期),另一个secondDate来自日期选择器输入字段。从算法上讲,这两个日期是相等的,因为它不考虑时间戳,但是代码不认为它们相等,因为firstDate中包含01:00:00
如何完全忽略时间戳进行比较? firstDate:

Tue Mar 24 1992 01:00:00 GMT-0500 (中部夏令时)

secondDate:

Tue Mar 24 1992 00:00:00 GMT-0500 (中部夏令时)

代码:
   if(firstDate < secondDate) {

        alert("This alert shouldn't pop out as dates are equal");
    }
3个回答

9
您可以使用toDateString来去除时间,然后将其重新分配给firstDate和secondDate变量。可能有更好的方法,但这是我想到的方法。
firstDate = new Date(firstDate.toDateString());
secondDate = new Date(secondDate.toDateString());
if(firstDate < secondDate){
    alert("This alert shouldn't pop out as dates are equal");
}

此外,您需要确保比较的是日期的值,而不是检查它们是否为同一对象。因此,请尝试类似下面这样的代码:
firstDate.valueOf() == secondDate.valueOf()

你也可以查看我的JSFiddle示例

Derek,感谢您的回复。我也有同样的解决方案,不知道是否还有其他方法。如果没有其他人回复,我会接受您的答案。 - user1195192

3
使用Date.setHours(hrs, mins, secs, ms)函数并将所有参数设为0,可以将两个日期的时间设置为午夜(如果需要保留带有时间的日期副本,请进行复制)。

1

Derek的回答是正确的。另一种不需要创建新日期实例的方法是创建RFC3339日期字符串。

var firstDateStr = firstDate.toISOString().slice(0, 10);
var secondDateStr = secondDate.toISOString().slice(0, 10);

return (firstDateStr < secondDateStr);

在我的例子中,我不是在比较字符串,而是使用从toDateString()返回的结果初始化的new Date() - derekaug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接