我知道有多种方法可以在 CentOS 主机上设置系统时区。我想知道的是这个时区的含义,它似乎是默认设置的,并由实用程序Host
报告timedatectl
$timedatectl
Local time: Tue 2019-04-02 13:13:25 CEST
Universal time: Tue 2019-04-02 11:13:25 UTC
RTC time: n/a
Time zone: Host (CEST, +0200)
NTP enabled: n/a
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2019-03-31 01:59:59 CET
Sun 2019-03-31 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2019-10-27 02:59:59 CEST
Sun 2019-10-27 02:00:00 CET
当我将系统 timezeone 定义为更有意义的国家/城市设置时,这个Host
时区设置对于特别是 java 应用程序来说似乎不够好,如下所示:
$ timedatectl
Local time: Tue 2019-04-02 13:32:05 CEST
Universal time: Tue 2019-04-02 11:32:05 UTC
RTC time: Tue 2019-04-02 13:32:05
Time zone: Europe/Amsterdam (CEST, +0200)
....
user.timezone
JVM 通过将其系统属性设置为相同的国家/城市来使用它。然而,如果Host
时区设置有效,JVM 会完全忽略这一点并设置
user.timezone
为 GMT+01:00,这与Host (CEST, +0200)
我不同并使我感到困惑。总结以上
- 时区名称的含义是什么
Host
? - 为什么它不被 JVM 尊重
- 一旦我将时区更改为某个国家/城市,有没有办法将其重置回
Host
(如果这有意义的话)?
答案1
就我个人而言,我从未见过“主机”值,当您输入以下内容时是否有此条目:
timedatectl list-timezones | grep -i host
我认为不会,因为没有国家/城市的唯一值是“UTC”。为什么您不只使用 Europe/Amsterdam TZ ,它还采用 CEST 和 +2h00 GMT。