如何在添加no.of天后获得Joda-Time的确切月份差异

时间:2013-02-18 15:28:16

标签: java jodatime

我试图找到两个日期之间的数月。任何帮助赞赏。我在下面的示例中使用Joda-Time

DateMidnight start = new DateMidnight(new Date()); 
DateMidnight dtEndDate  = start.plusDays(11);   //adding Days

int months = Months.monthsBetween(start, dtEndDate).getMonths();

System.out.println("Months between " +
                    start.toString("yyyy-MM-dd") + " and " +
                    dtEndDate.toString("yyyy-MM-dd") + " = " +
                    months + " month(s)");

以上代码在2013年2月18日至2013年3月1日期间返回“0”

由于我需要在同一个月找到差异,我不能添加+1个月,我也需要找到两个过去时期之间的差异,即“2012年12月04日”和“2013年1月06日”之间的差异return -1;

scenario1:

date1:  2013-02-18
    date1.plusDays(11);
date2:  2013-03-01
Output : 0 month(s)   //but I need as 1 Month

scenario2:
date1:  2013-02-18
    date1.plusDays(1);
date2:  2013-02-19
Output : 0 month(s)   //returns correctly exactly what I need

scenario3:
date1:  2013-03-18
date2:  2013-02-19
Output should be : -1 month(s)

1 个答案:

答案 0 :(得分:5)

在比较之前,将两个日期的月份设置为1

startModified = start.withDayOfMonth(1); 
endModified = end.withDayOfMonth(1);
int months = Months.monthsBetween(startModified, endModified).getMonths();