1

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

这似乎会导致两个问题:

  1. 我们必须确保为 DST 开始/结束重置。例如,我们设置了一个计划任务来查询数据库并设置时区。恼人的。
  2. 由于我们(目前)未知的原因,我们的计划任务有时会设置错误的时区。

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

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

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

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

有什么建议吗?Java 6.0_26

4

1 回答 1

0

首选的解决方案总是隐蔽到 UTC 和 UTC。使用joda-time库进行转换。

于 2012-08-01T20:56:28.127 回答