java SimpleDataFormat日期实际结果已更改

qco9c6ql  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(360)

这个问题在这里已经有答案了

迄今为止的java解析字符串(2个答案)
java SimpleDataFormat在日期对象中返回错误的值(1个答案)
5天前关门了。
我使用下面的代码来更改日期的日期格式。但结果会随着日期的不同而变化,变成2021年12月27日。当我检查它时,它说它使用公历。任何人都知道怎么解决这个问题。

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
yi0zb3m4

yi0zb3m41#

问题是你用的是 YYYY 而不是 yyyy . 我尝试了你的代码片段,这应该可以解决你的问题。

ruoxqz4g

ruoxqz4g2#

使用 yyyy 而不是 YYYY 因为 Y 表示一年中的一周或一年中的一周 y 仅表示年份。
根据java文档中的年周和年周:
一年中的一周与一年中的一周同步。第一周和最后一周(含)之间的所有周都具有相同的周-年值。因此,一周中的第一天和最后一天可能具有不同的日历年值。
修改代码:

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

相关问题