问题描述
我使用下面的代码来更改日期的日期格式。但是结果更改为不同的日期,变为 12/27/2021。当我检查它时,它说它使用公历。任何人都知道如何解决这个问题。
String date = "23-03-2021";
Date d = new SimpleDateFormat("dd-MM-YYYY").parse(date);
SimpleDateFormat outputFormat = new SimpleDateFormat("MM/dd/YYYY");
String paymentdate = outputFormat.format(d);
System.out.println(paymentdate);
实际:
12/27/2021
预期:
03/23/2021
解决方法
问题在于您使用的是 YYYY
而不是 yyyy
。我试过你的代码片段,应该可以解决你的问题。
使用yyyy
代替YYYY
,因为Y
代表一年中的一周或一年中的一周,而y
仅代表年。
根据Java Docs on Week Of Year and Week Year:
一周年与 WEEK_OF_YEAR 周期同步。之间的所有周 第一周和最后一周(含)具有相同的周年值。 因此,一周的第一天和最后一天可能会有所不同 日历年值。
修改后的代码:
String date = "23-03-2021";
Date d = new SimpleDateFormat("dd-MM-yyyy").parse(date);
SimpleDateFormat outputFormat = new SimpleDateFormat("MM/dd/yyyy");
String paymentdate = outputFormat.format(d);
System.out.println(paymentdate);
输出:
03/23/2021
不要使用 java.util.Date
,因为它已被弃用,将来会被删除。更好地使用 java.time
包中的类。
使用 java.time
类的等效代码:
String date = "23-03-2021";
TemporalAccessor d = DateTimeFormatter.ofPattern("dd-MM-yyyy").parse(date);
String paymentdate = DateTimeFormatter.ofPattern("MM/dd/yyyy").format(d);
System.out.println(paymentdate);
输出:
03/23/2021