【发布时间】:2021-08-11 18:03:28
【问题描述】:
我需要将日期从这种格式:WeekDay Month DD HH:MM:SS GFT YYYY解析为这种格式:YYY/MM/DD,这是我想做什么:
SimpleDateFormat format = new SimpleDateFormat("YYYY/MM/DD");
String conclusionDate = format.format(filter.getConclusionDate());
但是发生了一些错误。例如,当我尝试格式化此日期:“Thu Sep 01 00:00:00 GFT 2016”时,我得到的是“2016/09/245” “2016/09/01”
最奇怪的是,它似乎只发生在与 1 月不同的月份。当我尝试另一个随机示例时,例如“Sat Jan 01 00:00:00 GFT 2000”,我得到了我想要的结果:“2000/01/01”。如果我改变日期字段,它仍然可以正确格式化
但是当我把它改成另一个月份时,比如 2 月(“Tue Feb 01 00:00:00 GFT 2000”),我弄错了:“2000/02/ 32 "
为什么会这样?
OBS:在您问之前:是的,我已经检查过,getConclusionDate() 中返回的日期完全符合预期格式 WeekDay Month DD HH:MM:SS GFT YYYY .
【问题讨论】:
-
例如,当我尝试格式化此日期时:“Thu Sep 01 00:00:00 GFT 2016” 你需要 parse那首先。这是怎么做到的?
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate和DateTimeFormatter。