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

标签 java date datetime jodatime

我正在使用 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) 为假,即使 target 日期和 start 具有相同的值。

我想要 target >= start 但这里它只考虑 target > start
我希望它具有包容性。

是否意味着 isAfter 方法只能找到匹配项?

我浏览了 Joda Time 的 javadoc,但没有找到任何相关信息。

最佳答案

是的,isAfter 是独占的,否则它可能应该被命名为 isEqualOrAfter 或类似的名称。

解决方法:用“not before”代替“after”,用“not after”代替“before”。

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

关于java - 包含日期范围检查在 Joda 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13583944/

相关文章:

java - 迭代二进制搜索未完成

date - 在 GoLang 中使用 GMT+2 获取当前时间

Delphi:SetFileDate 创建错误的 LastWriteTime(夏季/冬季)

java - 比较Java中的日期 - 仅年,月和日

ruby-on-rails - 如何在Rails中使用英文日期的to_date

java - 导入 ARFF 文件期间无法解析的日期 'yyyy-MM-dd HH:mm:ss'

python - 计算两个日期之间的差异

java - 如果未明确提交或回滚,则自动提交事务

java - Java中的数据存储

java - 有没有开源的Java库或java源代码来简化 boolean 表达式