0

我正在尝试将以下字符串解析为日期对象:9/14/2012 9:50:56 PM

我正在使用以下格式:

DateFormat formatter = new SimpleDateFormat("MM/dd/yy HH:mm:ss a");
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));

但我不断收到以下日期:Fri Sep 14 06:50:56 PDT 2012

我似乎要休息 12 小时(在考虑到时间变化之后)。但是,当我解析以下字符串时:9/14/2012 1:00:00 AM - 我得到了正确的日期对象:Thu Sep 13 22:00:00 PDT 2012

我做错了什么?

4

1 回答 1

1

如果您的日期是 am/pm 格式,您应该使用hh, 而不是HH几个小时。请参阅参考资料:http ://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

这里发生的情况是9被视为 24 小时格式的 09 小时,即上午 9 点,因此您的日期被正确地推迟了 3 小时以使其成为上午 6 点。第二个日期凌晨 1 点是 01 小时,日期是正确的。

于 2012-09-14T05:06:57.567 回答