【发布时间】:2015-04-13 08:18:19
【问题描述】:
我正在使用TimeZone.setDefault(TimeZone.getTimeZone("EST")); 来获取 EST 时区,它对我来说工作正常。但有时由于默认的 JVM 时区,当没有人在我的项目中调用此方法时,我会得到时区 EDT。
public getTimeInEST(XMLGregorianCalendar date) {
TimeZone.setDefault(TimeZone.getTimeZone("EST"));
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("EST"));
String newTime = formatter.format(date.toGregorianCalendar().getTime());
Date newDate = null;
try {
newDate = formatter.parse(newTime);
System.out.println("ESTDate : " + newDate)
} catch(ParseException e) {
System.out.println(e.getMessage);
}
}
有没有其他方法可以在不使用TimeZone.setDefault(TimeZone.getTimeZone("EST")) 的情况下在 EST 时区获取 XMLGregorianCalendar 日期?
【问题讨论】:
-
你不需要同时设置默认时区和调用
formatter.setTimeZone,确定吗? -
我得到 EST 时间没有任何错误,但我不想使用 TimeZone.setDefault(TimeZone.getTimeZone("EST"));获取 EST 时间。
-
仅供参考,麻烦的旧日期时间类,如
java.util.Date、java.util.Calendar和java.text.SimpleTextFormat现在是 legacy,被 java.time 类取代。见Tutorial by Oracle。
标签: java date datetime timezone