如何从用户在 java 中输入的日期获取下一年的日期

How to get next year date from the user entered date in java

下面是返回错误日期的代码

String dt = "01-08-2021";
SimpleDateFormat format = new SimpleDateFormat("dd-mm-yyyy");
Date date = new SimpleDateFormat("dd-mm-yyyy").parse(dt);
       
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, -1);
cal.add(Calendar.YEAR, 1);
      
date = cal.getTime();
System.out.println(format.format(date));

它打印为 31-08-2021,它应该打印 31-07-2022。 如果我通过 02-08-2021,它会完美运行 01-08-2022 我正在使用 java1.7。谁能帮我解决这个问题。

不确定这是否是问题所在...但是:您使用的 SimpleDateFormat 有误。 MM 代表月份。 mm 代表分钟。看这里:https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

您的代码中不需要行 - cal.add(Calendar.DATE, -1)。

您可以试试下面的代码,它工作正常

        String dt = "01-08-2021";
        SimpleDateFormat format = new SimpleDateFormat("dd-mm-yyyy");
        Date date = new SimpleDateFormat("dd-mm-yyyy").parse(dt);

        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        
        cal.add(Calendar.YEAR, 1);

        date = cal.getTime();
        System.out.println(format.format(date));