添加年份的Java日历问题

sun*_*leo 1 java calendar date

我正在尝试添加一年至今,但它为不同的输入提供了相同的日期。输入日期是 28/Feb/2020 和 29/Feb/2020 并且它们的输出与 28/Feb/2021 相同。请帮我找出这里有什么问题。

更新:

我预计输出为 28/Feb/2021 和 01/Mar/2021。

public static Date dateAdd(Date newDate, int field, int amount) {
        Calendar aCalendar = Calendar.getInstance();
        aCalendar.setTime(newDate);
        aCalendar.add(field, amount);
        return aCalendar.getTime();
    }

    public static void main(String[] args) throws Exception {

        System.out.println(dateAdd(new SimpleDateFormat("dd/MM/yyyy").parse("28/02/2020"),Calendar.YEAR,1));
        System.out.println(dateAdd(new SimpleDateFormat("dd/MM/yyyy").parse("29/02/2020"),Calendar.YEAR,1));

        // Console output below

        //Sun Feb 28 00:00:00 IST 2021
        //Sun Feb 28 00:00:00 IST 2021
    }
Run Code Online (Sandbox Code Playgroud)

小智 5

在完成addroll文档后。很明显,您正在寻找的是在滚动中找到而不是添加。

在对该主题进行了一些研究之后,我发现给定的场景也取决于业务并取决于您想要做什么,因为添加滚动让您可以选择其中任何一个。

我在搜索我遇到的类似问题时发现了一点。

需要修改后回到您的代码

aCalendar.roll(field, amount);
Run Code Online (Sandbox Code Playgroud)

这里的更多专家将能够帮助清理这个答案。JavaDocs 对我来说不是很清楚,所以下面的问题有一些有趣的答案