Java TimeZone.setDefault(“GMT-7”)

时间:2012-08-01 20:47:42

标签: java timezone

我正在寻找一种更好的方法来设置Java的默认时区。我们目前正在访问我们的DB2数据库以获取它的当前时区,但它不是时区名称,只是当前的小时/分钟偏移值。因此我们采用该值并构建一个类似“GMT-07:00”的ID。

这似乎导致了两个问题:

  1. 我们必须确保重置DST开始/结束。例如我们设置了一个计划任务,查询数据库并设置时区。烦。
  2. 由于我们尚未知道的原因,我们的预定任务有时会设置错误的时区。
  3. 假设DB2总是返回正确的值,那么我只能想象“GMT-07:00”是模糊的,并且在Java /它的时区db / OS之间,它从表中获取不同的值。

    在计算像“GMT-07:00”之类的字符串后,我们的代码会这样做:

     String timezoneGMTOffsetString = "GMT-07:00";
     TimeZone localTimeZone = TimeZone.getTimeZone(timezoneGMTOffsetString);
     TimeZone.setDefault(localTimeZone);
     System.setProperty("user.timezone", timezoneGMTOffsetString);
    

    我们认为我们只需要在外部设置值并在启动Tomcat时使用-Duser.timezone="America/Los_Angeles"。然后我们可以废弃预定的工作!

    有什么建议吗? Java 6.0_26

1 个答案:

答案 0 :(得分:0)

首选解决方案始终转换为UTC和UTC。使用joda-time库进行转换。