我想精确计算两个日期之间的月份来实现这一点,我做了类似的事情:
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/");
所以这给我在2013年5月28日到2014年2月28日之间正好9个月但是! 当我计算日期(29,30,31)/ 05/2013和28/02/2014它总是给我9个月通常应该说8M / 3W /(6,5,4)D /为什么总是9M / 0W / 0D请......?
非常感谢
答案 0 :(得分:2)
您的问题是您期望与提供的内容略有不同。如果我问你“1月30日加一个月是什么?”的问题。那么有许多不同的答案在不同的假设下是有效的。在Joda的案例中,答案是“2月28日”(如果是闰年,则为29日)。
虽然您要求提供基于月份的信息,但我建议您先获取天数并将其作为基础,因为它可能更接近您的需求:
int days = Days.daysBetween(dateTime, dateTime6MonthAfter).getDays();
您始终可以使用此号码反馈代码并获取不同的值以符合您的要求。