MahmoudS MahmoudS - 1 month ago 5x
Java Question

Date before method returns false if both dates are equal

when comparing two dates with date before method, if the dates are similar it returns false as follows:

  • date1: Tue Dec 18 00:00:00 GMT+02:00 2012

  • date2: Tue Dec 18 00:00:00 GMT+02:00 2012

the method
always return false in thise case, which does not make sense to me (doesn't apply to my case in other words).
i want to check if a date (day/month/year) equals today's date (day/month/year) ?


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 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)) ...

Answers provided below suggest testing for the inverse, and they're right:

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

Both tests are equivalent (some quick tests didn't even show a significant performance gap, but the gap is always to the advantage of the second one).