As date1.equals(date2), it is normal that date1.before(date2) returns false. As will do date1.after(date2).
Both dates are the same, so one is not before the other.
From the javadoc :
true if and only if the instant of time represented by this Date object is strictly earlier than the instant represented by when; false otherwise.
Try something like:
if (date1.before(date2) || date1.equals(date2)) ...
The answers provided below suggest testing for the inverse, and they're right:
if (!date1.after(date2)) ...
Both tests are equivalent.
Answer from xlecoustillier on Stack OverflowVideos
As date1.equals(date2), it is normal that date1.before(date2) returns false. As will do date1.after(date2).
Both dates are the same, so one is not before the other.
From the javadoc :
true if and only if the instant of time represented by this Date object is strictly earlier than the instant represented by when; false otherwise.
Try something like:
if (date1.before(date2) || date1.equals(date2)) ...
The answers provided below suggest testing for the inverse, and they're right:
if (!date1.after(date2)) ...
Both tests are equivalent.
You can simply test the inverse :
!date1.after(date2)
You can always convert a strict order check to a non-strict check in this manner. Since mathematically :
a > b ⇔ ¬ (a ≤ b)