MahmoudS MahmoudS - 3 months ago 9
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).