Java SimpleDateFormat 输出错误

Wrong output with Java SimpleDateFormat

我需要从这种格式解析日期:WeekDayMonthDDHH:MM:SSGFTYYYY 到这种格式: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"

最奇怪的是,它似乎只发生在与 JANUARY 不同的月份。当我尝试另一个随机示例时,例如“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 .

D 是年中的第几天,d 是一个月中的第几天。你想要YYY/dd/MMhttps://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html