Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
df.setTimeZone(TimeZone.getTimeZone("America/New_York"));
try {
System.out.println(df.format(cal.getTime()));
System.out.println(df.parse(df.format(cal.getTime())));
} catch (ParseException e) {
e.printStackTrace();
}
下面是结果:Java的日期格式解析()不尊重时区
2011-09-24十四点10分51秒-0400
周六09月24日20:10 :51 CEST 2011
为什么当我解析一个日期,我从格式()得到它不尊重时区?
这是正确的...尝试打印'System.out。println(df.format(df.parse(df.format(cal.getTime()))));'它和预期一样:-) –
好了,显然问题来自toString()?感谢您的建议。 –
@MaximeLaval:特别是从'Date.toString',是的 - 你需要知道'Date'只是一个瞬间,而不是在任何特定的时区或日历。 –