java – 包含日期范围检查在Joda时间

我正在使用Joda Time 2.1库。

我写了一个方法来比较一个给定的日期是否在一个日期范围之间。我希望它包含开始日期和结束日期。我已经使用LocalDate,因为我不想考虑时间部分只有日期部分。

下面是它的代码。

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));
}

上述方法的输出为:

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

我的问题是target.isAfter(start)是false,即使目标日期和开始具有相同的值。

我想要这个目标> =开始,但在这里它只考虑目标>开始。
我想要包容

这是否意味着isAfter方法专门找到一个匹配?

我已经经历了Joda时间的javadoc,但没有发现任何事情。

是的,isAfter是排他的,否则它应该可能被命名为isEqualOrAfter或类似的东西。

解决方案:使用“不在之前”而不是“之后”而不是“之前”而不是“之前”。

boolean isBetweenInclusive(LocalDate start, LocalDate end, LocalDate target) {
    return !target.isBefore(start) && !target.isAfter(end);
}
http://stackoverflow.com/questions/13583944/inclusive-date-range-check-in-joda-time

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 包含日期范围检查在Joda时间