SimpleDateFormat 无法正确解析 AM 或 PM

Dmy*_*kyi 0 java simpledateformat

我遇到了一些我不明白的事情。这是一个简单的操作(解析迄今为止的字符串),但它不考虑上午/下午,它总是设置上午。

这是我的示例,当我将 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());
Run Code Online (Sandbox Code Playgroud)

系统输出为

2020 年 4 月 2 日 4:50:00 上午

我做错了什么?请指教。

Ell*_*sch 5

您使用的HH24 小时时间(呈现时间为凌晨 4 点和下午 4 点)。使用hh类似,

SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd hh:mm a yyyy");
Run Code Online (Sandbox Code Playgroud)

通过这一改变,我得到了

Apr 2, 2020, 4:50:00 PM
Run Code Online (Sandbox Code Playgroud)

或者,您可以改变您的startDate喜好

String startDate = "Thu Apr 02 16:50 PM 2020";
Run Code Online (Sandbox Code Playgroud)

给出相同的输出(与HH)。