检查日期是否在给定的日期范围内

时间:2016-10-20 07:31:40

标签: java date range

这个问题是比较Java中包含的日期。

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

Date startDate, endDate, dateToCheck;

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

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

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

编辑刚看到你的编辑(我假设你正在使用Java Date):

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

答案 2 :(得分:2)

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

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