Java TimeZone.setDefault ("GMT-7")

标签 java timezone

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

这似乎会导致两个问题:

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

假设 DB2 总是返回正确的值,那么我只能想象“GMT-07:00”是模糊的,并且在 Java/它的时区 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-time用于转换的库。

关于Java TimeZone.setDefault ("GMT-7"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11767344/

相关文章:

java - JSON-lib NoClassDefFoundError org.apache.commons.lang.exception.NestableRuntimeException

timezone - 在现有的高流量网络应用程序中引入用户特定时区?

c# - 使用时区 UTC+0 时.NET c# ConvertTimeToUtc 无法发送到 Firestore

java - 使用 Gradle 从 webapp 创建一个包含类和资源的 JAR

java - 验证请求 - 数据库和 Java 如何存储和处理时区?

r - 是否可以使用类似 `tz=NULL` 的东西?... `as.POSIXct` 默认为依赖于语言环境的时区(与 `as.Date` 不同),这会导致问题

java - 通过浏览器偏移量转换时间

java - 从已排序的双向链表创建二叉搜索树

java - 离线Javadoc服务器

java - 从命令行添加 -classpath