我试图将以下字符串解析为日期对象: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
我做错了什么?
答案 0 :(得分:1)
如果您的日期是上午/下午格式,则应使用hh
代替HH
几小时。请参阅参考:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
这里发生的是9
被视为24小时格式的09小时,也就是早上9点,因此您的日期会被正确推迟3个小时以使其成为早上6点。第二个日期上午1点是01小时,日期是正确的。