比较忽略时间戳的两个日期的最简单方法是什么。我有两个日期firstDate
来自数据库(转换为javascript日期)和secondDate
来自日期选择器输入字段。
基本上是为了
我的算法这两个日期是相同的,因为它没有考虑时间戳,但代码不会认为它相等,因为firstDate
中有01:00:00
。
如何完全丢弃时间戳进行比较?
firstDate:
1992年2月24日星期二01:00:00 GMT-0500(中部夏令时)
secondDate:
1992年3月24日星期二00:00:00 GMT-0500(中部夏令时)
代码:
if(firstDate < secondDate) {
alert("This alert shouldn't pop out as dates are equal");
}
答案 0 :(得分:5)
您可以使用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 example。
答案 1 :(得分:3)
使用带有所有零参数的Date.setHours(hrs, mins, secs, ms)
函数将两个日期中的时间设置为午夜(如果您需要带有时间的日期用于其他目的,请复制一份)。
答案 2 :(得分:0)
Derek的回答是正确的。不创建新日期实例的替代方法是创建RFC3339日期字符串。
var firstDateStr = firstDate.toISOString().slice(0, 10);
var secondDateStr = secondDate.toISOString().slice(0, 10);
return (firstDateStr < secondDateStr);