[英]How to get number of months between dates?
在这个例子中, now
和now + 2 months
之间的差异不等于 2,尽管我认为LocalDate
数学是这样工作的:
import java.time.LocalDate;
import static java.time.temporal.ChronoUnit.MONTHS;
public class MyClass {
public static void main(String... args) {
LocalDate now = LocalDate.of(2020, 7, 31);
LocalDate later = now.plusMonths(2);
System.out.println("Now: " + now);
System.out.println("Later: " + later);
System.out.println("Months between now and later: " + MONTHS.between(now, later));
}
}
输出:
Now: 2020-07-31
Later: 2020-09-30
Months between now and later: 1
我发现这一点只是因为我碰巧运行了一个单元测试,该测试的日期超出了预期......
查看 LocalDate.addMonths 的 javadoc:
此方法通过三个步骤将指定的金额添加到月份字段:
Add the input months to the month-of-year field Check if the resulting date would be invalid Adjust the day-of-month to the last valid day if necessary
例如,2007-03-31 加上一个月将导致无效日期 2007-04-31。 代替返回无效结果,而是选择该月的最后一个有效日期 2007-04-30。
这意味着这是按预期工作的。 因此,无需求助于老式日期/时间 api ......
获取两个日期之间月数的正确方法是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.