33

我需要使用 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));
4

3 回答 3

110

如果您不能使用 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 年 1 月 31 日和 2013 年 2 月 1 日,那么您可以通过这种方式获得 1 个月的距离,这可能是您想要的,也可能不是您想要的。

于 2013-05-15T07:21:35.807 回答
4

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

时间差异的示例片段:

Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();
于 2013-05-15T07:16:15.300 回答
-5

你可以试试这个:

Calendar sDate = Calendar.getInstance();
Calendar eDate = Calendar.getInstance();
sDate.setTime(startDate.getTime());
eDate.setTime(endDate.getTime());
int difInMonths = sDate.get(Calendar.MONTH) - eDate.get(Calendar.MONTH);

我认为这应该有效。我为我的项目使用了类似的东西,它适用于我需要的东西(年份差异)。您Calendar从 a 中获得 aDate并获得当月的差异。

于 2013-05-15T07:19:15.393 回答