SimpleDateFormat 无法正确解析 AM 或 PM

SimpleDateFormat does not parse AM or PM properly

我遇到了一些我不明白的事情。 这是微不足道的操作(解析字符串到日期)但它没有考虑 AM/PM,它总是设置 AM.

这是我的示例,当我将 startDate 解析为 Date 时,它​​为其设置了 AM(我希望是 PM)。

String startDate = "Thu Apr 02 04:50 PM 2020";
SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd HH:mm a yyyy");
Date date1 = sdf.parse(startDate);
System.out.println(date1.toLocaleString());

系统输出为

Apr 2, 2020 4:50:00 AM

我做错了什么?请指教

您使用了 HH,即 24 小时 时间(呈现时间为上午 4 点和下午 4 点)。使用 hh 而不是

SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd hh:mm a yyyy");

通过这一改变,我得到了

Apr 2, 2020, 4:50:00 PM

您也可以像

那样改变您的startDate
String startDate = "Thu Apr 02 16:50 PM 2020";

给出相同的输出(HH)。