简单日期格式将PM时间错误地解析为AM时间

时间:2014-03-06 19:34:53

标签: java parsing date simpledateformat

我正在使用以下代码段,它将日期时间作为字符串,然后从中创建一个Date对象:

Date currentDate = new Date();
SimpleDateFormat f = new SimpleDateFormat("EEEE, MMMM d 'at' h:mm a");

currentDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2014-03-06 12:59:01");
System.out.println(f.format(currentDate));

最后两行的输出结果为“3月6日星期四12:59 AM ”,但应该 PM 。是什么造成的?它只发生在正午上午/下午开关。例如,如果解析的时间是("2014-03-06 00:59:01"),则输出正确“3月6日星期四12:59 AM ”。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

这一行

currentDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2014-03-06 12:59:01");

包含hh,即1-12小时格式。尝试使用大写HH,它使用0-23格式。

"yyyy-MM-dd HH:mm:ss"

输出:

Thursday, March 6 at 12:59 PM

日期格式符号和说明位于the SimpleDateFormat javadocs