您可以使用
Joda Time并使用月份和年份作为单位计算两个LocalDate值之间的时间段(这是您在此处获得的值).
示例代码:
import org.joda.time.*;
public class Test {
public static void main(String[] args) {
LocalDate dob = new LocalDate(1992, 12, 30);
LocalDate date = new LocalDate(2010, 12, 29);
Period period = new Period(dob, date, PeriodType.yearMonthDay());
System.out.println(period.getYears() + " years and " +
period.getMonths() + " months");
}
}
(这使用包含天数的句点类型,但这不会影响答案.)
一般来说,Joda Time是一个比使用日期/日历更好的API – 如果你能避免它,你真的不想自己开始执行日期计算.它很快就变得混乱了.
根据aioobe的回答,如果你划分两个整数表达式,算术将以整数运算执行,这可能不是你想要的 – 但对于日期和时间算术,只是让别人在第一时间做艰苦的工作:)
上面的代码将使用ISO-8601日历,这基本上是公历.如果要使用其他内容,请在LocalDate的年/月/日之后将其指定为另一个构造函数参数.