使用Java在几个月内获得两个日期之间的差异

ash*_*shu 30 java date

我需要使用Java来区分两个日期.我需要几个月的结果.

例:

Startdate = 2013-04-03 enddate = 2013-05-03结果应为1

如果间隔是

Startdate = 2013-04-03 enddate = 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));
Run Code Online (Sandbox Code Playgroud)

Eti*_*ret 103

如果您不能使用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);
Run Code Online (Sandbox Code Playgroud)

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

  • +1这将适用于每年的差异。(即)“开始日期= 2014-04-03结束日期= 2013-04-03”结果应为12,如OP所说。**更新**是的,即使只有1天的差额,他也会得到1个月的差额,但是OP指定他希望在几个月后得到。1月在这些日期之间并不是真正的差异,但是0甚至不是真正的差异。为此,如果您想要0个月,则可以执行“ Math.floor”之类的操作。 (2认同)