Java日期解析

时间:2012-09-14 05:00:37

标签: java date

我试图将以下字符串解析为日期对象: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"));

但我一直得到以下日期:星期五9月14日06:50:56 PDT 2012

我似乎在12小时后(在考虑时间变化后)。但是当我解析以下字符串时:9/14/2012 1:00:00 AM - 我得到正确的日期对象:2012年9月13日星期二22:00:00

我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果您的日期是上午/下午格式,则应使用hh代替HH几小时。请参阅参考:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

这里发生的是9被视为24小时格式的09小时,也就是早上9点,因此您的日期会被正确推迟3个小时以使其成为早上6点。第二个日期上午1点是01小时,日期是正确的。