tzdata 和 tzdata-java rpm

问题描述

根据 Google 的说法,tzdata rpm 控制在系统级别应用的时区,而 tzdata-java 控制面向 Java 的应用程序(例如 openJDK、JRE)的时区。

我的困惑是.. 为什么 java 应用程序不使用系统级时区的系统级相关数据。为什么需要单独的rpm tzdata-java 来更新时区?

解决方法

Java 在多种操作系统上运行,并非所有操作系统都包含 Linux rpm 包中的 tzdata。因此,他们似乎希望拥有一种适用于所有 Java 安装的解决方案,而不是一种适用于包含数据的操作系统,而另一种适用于不包含数据的系统。

我不知道是否所有操作系统都包含默认时区。他们似乎认为许多操作系统确实提供了默认时区,因此在需要采用的情况下,从操作系统中获取 JVM 的默认时区是有意义的。除了您还可以根据需要启动具有不同默认时区的 JVM,从命令行设置 user.timezone 系统属性。我可以补充一点,由于并非所有操作系统都具有相同的时区概念,因此有时在某些系统上需要进行一些转换。我至少见过一个 Stack Overflow 问题,其中 JVM 的默认时区与提问者对操作系统默认时区的预期不一致。