如何从用户在 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));
下面是返回错误日期的代码
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));