我正在尝试使用java.time.LocalDate中的plusMonths API。通过java文档,它清楚地表明日期是针对任何无效超过日期而调整的。
例如31-03-2017 + 1个月= 31-04-2017 - > 30-04-2017(4月31日无效)。
但是,当我尝试在2月份的日期使用API时,它不会返回下个月的最后一天(例如3月),而是在添加30天后返回日期。
例如28-02-2017 + 1个月= 29-03-2017(预计31-03-2017)。
public class AddMonthTest {
public static void main(String[] args) {
System.out.println(LocalDate.of(2017, 02, 28).plusMonths(1));
}
给出输出:2017-03-28,期望它应该返回31-03-2017。
答案 0 :(得分:4)
你可以使用TemporalAdjusters.lastDayOfMonth()移动到月的最后一天
public static void main(String[] args) {
System.out.println(LocalDate.of(2017, 2, 28).plusMonths(1).with(TemporalAdjusters.lastDayOfMonth()));
}
答案 1 :(得分:1)
除非文件明确指出,否则我认为不会这样做。它说:
返回此LocalDate的副本,其中添加了指定的月数
对我而言结果将与传入的输入具有相同的日期,这就是您所看到的。