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
)。
我遇到了一些我不明白的事情。 这是微不足道的操作(解析字符串到日期)但它没有考虑 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
)。