Java TimeZone.setDefault( "GMT-7" )



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

这似乎导致了两个问题:

  1. 我们必须确保为夏令时开始/结束进行重置。例如,我们设置了一个调度任务,查询数据库并设置时区。令人烦恼
  2. 由于我们未知的原因,我们的预定任务有时会设置错误的时区

假设DB2总是返回正确的值,那么我只能想象"GMT-07:00"是模糊的,并且在Java/it的时区db/操作系统之间,它从表中提取了一个不同的值。

在计算出类似"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

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

相关内容

  • 没有找到相关文章