Inclusive Date Range check in Joda Time

date, datetime, java, jodatime

Solution

Yes, `isAfter` is exclusive, otherwise it should probably have been named `isEqualOrAfter` or something similar.

Solution: Use "not before" instead of "after", and "not after" instead of "before".

boolean isBetweenInclusive(LocalDate start, LocalDate end, LocalDate target) {
    return !target.isBefore(start) && !target.isAfter(end);
}

Problem

I am using Joda Time 2.1 library. I have written a method to compare if a given date is between a date range of not. I want it to be inclusive to the start date and end date.I have used `LocalDate` as I don't want to consider the time part only date part. Below is the code for it. ``` isDateBetweenRange(LocalDate start,LocalDate end,LocalDate target){ System.out.println("Start Date : " +start.toDateTimeAtStartOfDay(DateTimeZone.forID("EST")); System.out.println("Target Date : " +targettoDateTimeAtStartOfDay(DateTimeZone.forID("EST")); System.out.println("End Date : " +end.toDateTimeAtStartOfDay(DateTimeZone.forID("EST")); System.out.println(target.isAfter(start)); System.out.println(target.isBefore(end)); } ``` The output of above method is : ``` Start Date: 2012-11-20T00:00:00.000-05:00 Target Date: 2012-11-20T00:00:00.000-05:00 End Date : 2012-11-21T00:00:00.000-05:00 target.isAfter(start) : false target.isBefore(end) : true ``` My problem is `target.isAfter(start)` is false even if the `target` date and `start` are having the same values. I want that `target >= start` but here it considers only `target > start`. I want it inclusive. Does it mean that `isAfter` method finds a match exclusively ? I have gone through the javadoc for Joda Time, but didn't found anything about it.

Original source

Related problems