我需要使用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));
答案 0 :(得分:99)
如果您不能使用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个月的距离,这可能是您想要的也可能不是。
答案 1 :(得分:4)
您可以将Joda时间库用于Java。使用它来计算日期之间的时差可能会容易得多。
time-diff的示例代码段:
Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();
答案 2 :(得分:-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
获得Date
并获得月份差异。