2013-05-31 182 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