【问题标题】:Check that date is within a given range of date inclusive [duplicate]检查日期是否在给定的日期范围内[重复]
【发布时间】:2016-10-20 07:31:40
【问题描述】:

这个问题是在 Java 中比较日期。

有没有更好的方法来检查给定日期是否在一个范围内?

Date startDate, endDate, dateToCheck;

if ( dateToCheck.equals(startDate) || 
     dateToCheck.equals(endDate) || 
    (dateToCheck.after(startDate) && dateToCheck.before(endDate) ) 

【问题讨论】:

标签: java date range


【解决方案1】:

您可以通过检查给定日期不在范围之前或之后来避免 equals 检查:

if (!dateToCheck.before (startDate) && !dateToCheck.after (endDate))

【讨论】:

    【解决方案2】:

    如果您使用 Joda DateTime,则可以使用 Interval 类中的特定方法:interval.contains(date)。您可以很容易地将 Java 日期转换为 Joda Interval 和 DateTime。

    有关 contains 方法的更多信息,请参阅here

    Edit 刚刚看到您的编辑(我假设您使用的是 Java Date):

    Interval interval = new Interval(startDate.getTime(), endDate.getTime()); interval.contains(dateToCheck.getTime());

    【讨论】:

    • 感谢您的回答这是给java.util.Date
    【解决方案3】:

    您始终可以将 compareTo 方法用于包含日期范围:

    public boolean checkBetween(Date dateToCheck, Date startDate, Date endDate) {
        return dateToCheck.compareTo(startDate) >= 0 && dateToCheck.compareTo(endDate) <=0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多