这个问题是比较Java中包含的日期。
是否有更好的方法来检查给定日期是否包含在范围内?
Date startDate, endDate, dateToCheck;
if ( dateToCheck.equals(startDate) ||
dateToCheck.equals(endDate) ||
(dateToCheck.after(startDate) && dateToCheck.before(endDate) )
答案 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;
}