2013-05-31 137 views
0

我想两个日期之间的精确计算月实现这一点,我做这样的事情:乔达时间:日期计算

  DateTimeZone ZONE = DateTimeZone.forID("Europe/London"); 
      String DATE_FORMAT = "dd/MM/yyyy"; 
      DateTimeFormatter FORMATTER = DateTimeFormat.forPattern(DATE_FORMAT).withZone(ZONE); 
      LocalDate dateTime = FORMATTER.parseLocalDate("28/05/2013"); 
      LocalDate dateTime6MonthAfter = FORMATTER.parseLocalDate("28/02/2014"); 
      Period todayUntilEndOfContract = new Period(dateTime,dateTime6MonthAfter); 
      todayUntilEndOfContract.getMonths() +"M/"+ todayUntilEndOfContract.getWeeks() +"W/"+ todayUntilEndOfContract.getDays() +"D/"); 

因此,这给我28/05/2013和28之间的精确9个月/ 02/2014但是! 当我计算日期(29,30,31)/ 05/2013与28/02/2014它总是给我9个月通常应该说8M/3W /(6,5,4)D /为什么总是这样9M/0W/0D请... ...?

非常感谢

回答

2

你的问题是,你期待的东西比提供什么有点不同。如果我问你“1月30日加一个月是什么?”的问题。那么在不同的假设下有很多不同的答案是有效的。在乔达的案例中,答案是“2月28日”(如果是闰年,则为29日)。

虽然你所要求的一个月为基础的信息,我建议你获得的天数,而不是和使用,作为一个基础,因为它可能是更接近你需要的东西:

int days = Days.daysBetween(dateTime, dateTime6MonthAfter).getDays(); 

你可以请始终使用此号码反馈您的代码并获取不同的值以符合您的要求。

+0

好的,但考虑到你的建议;如何使用这些日子来确定月份计算...? 对不起,因为我是一个新手jodatime = / – Akyo