如果两个日期相等,则方法之前的日期返回 false

2022-09-01 00:43:12

当将两个日期与日期之前的方法进行比较时,如果日期相似,则返回 false,如下所示:

  • 日期1: 星期二 12月18日 00:00:00 GMT+02:00 2012
  • date2: 周二 12月18日 00:00:00 GMT+02:00 2012

在这种情况下,该方法总是返回false,这对我来说没有意义(换句话说,不适用于我的情况)。我想检查日期(日/月/年)是否等于今天的日期(日/月/年)?date1.before(date2)


答案 1

因为,返回 false 是正常的。正如将做的那样。date1.equals(date2)date1.before(date2)date1.after(date2)

两个日期是相同的,所以一个不在另一个之前。

来自 javadoc

true 当且仅当此 Date 对象所表示的时间时刻严格早于 when 所表示的瞬间;否则为假。

试试类似的东西:

if(date1.before(date2) || date1.equals(date2)) ...

下面提供的答案建议对逆向进行测试,他们是对的:

if(!date1.after(date2)) ...

这两个测试是等效的。


答案 2

你可以简单地测试反函数:

!date1.after(date2)

您始终可以通过这种方式将严格订单检查转换为非严格检查。由于数学上:

a > b ⇔ ¬ (a ≤ b)