使用 Java 获取两个日期(以月为单位)之间的差异

2022-09-01 07:59:38

我需要使用Java获得两个日期之间的差异。我需要我的结果在几个月内。

例:

开始日期 = 2013-04-03 结束日期 = 2013-05-03 结果应为 1

如果间隔为

开始日期 = 2013-04-03 结束日期 = 2014-04-03 结果应为 12

使用以下代码,我可以在几天内获得结果。我怎样才能在几个月内到达?

Date startDate = new Date(2013,2,2);
Date endDate = new Date(2013,3,2);
int difInDays = (int) ((endDate.getTime() - startDate.getTime())/(1000*60*60*24));

答案 1

如果您无法使用JodaTime,则可以执行以下操作:

Calendar startCalendar = new GregorianCalendar();
startCalendar.setTime(startDate);
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(endDate);

int diffYear = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
int diffMonth = diffYear * 12 + endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH);

请注意,如果您的日期是2013-01-31和2013-02-01,则以这种方式获得1个月的距离,这可能是也可能不是您想要的。


答案 2

您可以使用Joda时间库进行Java。用它来计算日期之间的时间差异会容易得多。

时间差异的示例代码段:

Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();