SimpleDateFormat无法正确解析AM或PM [重复]

问题描述 投票:0回答:1

我遇到了一些我不理解的问题。这是微不足道的操作(将字符串解析为日期),但它没有考虑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());

系统输出为

2020年4月2日4:50:00 AM

我做错了什么?请指教。

java simpledateformat
1个回答
4
投票

您使用了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)。

© www.soinside.com 2019 - 2024. All rights reserved.