LocalDate.plusMonth为二月

时间:2017-03-14 06:10:50

标签: java date java-8

我正在尝试使用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。

2 个答案:

答案 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的副本,其中添加了指定的月数

对我而言结果将与传入的输入具有相同的日期,这就是您所看到的。