请注意,这不是以下任何一项的副本
我有两个日期:
- 开始日期:
"2016-08-31"
- 结束日期:
"2016-11-30"
上面两个日期之间有 91 天的持续时间,我希望我的代码返回 3 个月的持续时间,但下面的方法只返回 2 个月。有人有更好的建议吗?或者你们认为这是 Java 8 中的错误? 91天工期仅返回2个月。
非常感谢你的帮助。
方法一:
Period diff = Period.between(LocalDate.parse("2016-08-31"),
LocalDate.parse("2016-11-30"));
方法二:
long daysBetween = ChronoUnit.MONTHS.between(LocalDate.parse("2016-08-31"),
LocalDate.parse("2016-11-30"));
方法三:
我尝试使用 Joda 库而不是 Java 8 API,它有效。它会返回 3,看起来 Java duration months 计算也使用了 days 值。但就我而言,我不能在我的项目中使用 Joda。所以还在寻找其他解决方案。
LocalDate dateBefore= LocalDate.parse("2016-08-31");
LocalDate dateAfter = LocalDate.parse("2016-11-30");
int months = Months.monthsBetween(dateBefore, dateAfter).getMonths();
System.out.println(months);
原文由 SharpLu 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为你不关心你的情况。您只需要两个日期之间的月数,使用期间的文档来调整日期,它使用了
Jacob
解释的天数。只需将两个实例的天数设置为相同的值(每月的第一天)与其他解决方案相同:
编辑来自 @Olivier Grégoire 的评论:
我们可以使用不使用天单位的
YearMonth
而不是使用LocalDate
并将日期设置为一个月的第一天。