在Java中,如何确定两个日历对象之间经过的时间?
在java中,计算两个日历日期之间的时间量的最佳方法是什么。我正在编写一个方法,确定两个日期之间经过的月数,并根据预定义的月数返回一个布尔值。这是我的代码(工作不正常)
这段代码总是返回false。此外,该代码不考虑过去的天数。如果开始日期在月末,这可能会是一个问题。难道没有一个简单的比较方法吗
private boolean hasMatured()
{
Calendar now = Calendar.getInstance();
Calendar start = (Calendar) super.dateOpened.clone();
int nowYear = now.get(Calendar.YEAR);
int nowMonth = now.get(Calendar.MONTH);
int startYear = start.get(Calendar.YEAR);
int startMonth = start.get(Calendar.MONTH);
int monthsElapsed = (nowYear - startYear) * 12 + (nowMonth - startMonth);
return monthsElapsed>PERIOD_IN_MONTHS;
}
# 1 楼答案
我错过什么了吗?日历中有一个compareTo()以及其他有用的东西
那么:
Calendar now = Calendar.getInstance();
now.add(Calendar.MONTH, -PERIOD_IN_MONTHS);
return super.dateOpened.before(now);
从今天减去X个月,看看开始日期是否仍在该日期之前。如果是,那么X个月一定已经过去了
# 2 楼答案
我强烈推荐Joda Time用于Java中所有与日期相关的内容。它有一个更干净、更直观的API,以及日期间隔等概念