【发布时间】:2023-03-24 00:34:02
【问题描述】:
我正在尝试将日期转换为字符串,但转换时 2018 年更改为 2019 年。
我尝试了不同的日期,它有效。它仅在 2018 年 12 月 30 日和 12 月 31 日失败。
SimpleDateFormat fmt = new SimpleDateFormat("YYYY-MM-dd");
Date date = fmt.parse("2018-12-30");
String date2 = fmt.format(date);
预期结果:2018-12-30
实际结果:2019-12-30
【问题讨论】:
-
什么是
sdf?? -
fmt似乎工作得很好,产生Date的Sun Dec 30 00:00:00 AEDT 2018。sdf设置是什么?另外,你真的应该使用java.timeAPI 而不是这些过时的类 -
我刚刚更新了 sdf 声明
-
相关:stackoverflow.com/questions/15133549/…。如果你在谷歌上搜索“SimpleDateFormat YYYY vs yyyy”,那么你会发现几个链接,上面写着:“不要使用 YYYY”。
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate和DateTimeFormatter。