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/");

所以这给了我 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 请...?

非常感谢

4

1 回答 1

2

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

尽管您要求提供基于月份的信息,但我建议您获取天数并将其用作基础,因为它可能更接近您的需要:

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

您始终可以使用此数字反馈到您的代码并获得不同的值以满足您的要求。

于 2013-05-31T18:29:35.690 回答