我正在尝试对昨天和今天进行简单的日期比较
if (yesterday.before(today)) {
...
}
问题在于使用 before 方法时,即使只相差几秒钟,也会返回 true。如何仅比较日期(因为我只想在前一天为真时才评估此条件(应忽略分钟/秒)?
提前感谢您。
<artifactId>commons-lang</artifactId>
。我从未使用过 Maven。 - Praveen Lobo如果你不想使用第三方库,可以实现一个像这样的方法:
public boolean before(Calendar yesterday, Calendar today) {
if(yesterday == today) return false;
if(yesterday == null || today == null) return false;
return yesterday.get(Calendar.YEAR) < today.get(Calendar.YEAR) ? true :
yesterday.get(Calendar.YEAR) == today.get(Calendar.YEAR) && yesterday.get(Calendar.DAY_OF_YEAR) < today.get(Calendar.DAY_OF_YEAR);
}
Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();
其中startDate
和endDate
是日期的Joda版本,实际上是DateTime
的超类。
将Java Date
对象转换为Joda DateTime
对象可以通过构造函数调用完成:
DateTime dateTime = new DateTime(javaDate);
如果你想坚持使用Date
,你可以暂时将当前日期向前调整一天。如果before()
仍然导致相同的结果,则表示时间跨度至少为一天。
final static long DAY_MILLIS = 86400000;
Date d1 = new Date(2011, 06, 18);
Date d2 = new Date(2011, 06, 16);
Date temp = new Date(d1.getTime() - DAY_MILLIS);
if (temp.before(d2))
// Do stuff
}
millisSinceEpoch / MILLIS_IN_DAY
)。 - OpenSauce