我有一台运行 Amazon Linux(如 rhel fedora)的 AWS EC2 服务器,它不知道如何分辨时间,或者以某种方式不考虑夏令时。这使得我所有的时间戳都缩短了 1 小时。
[ec2-user@ip-xxx-xx-xx-xxx ~]$ date && date -u
Thu Oct 24 17:19:56 EST 2019
Thu Oct 24 22:19:56 UTC 2019
该输出的问题在于(在命令执行时),EST 中的实际时间是18:19:56
。
同样,UTC 时间是正确的,我已将/etc/localtime
链接设置为America/Detroit
,但它仍然显示UTC-5
并且不会调整 DST 的小时。
[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo hwclock --debug
hwclock from util-linux 2.23.2
Using /dev interface to clock.
Last drift adjustment done at 1571955488 seconds after 1969
Last calibration done at 1571955488 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2019/10/24 22:23:43
Hw clock time : 2019/10/24 22:23:43 = 1571955823 seconds since 1969
Thu 24 Oct 2019 05:23:43 PM EST -0.689737 seconds
我的所有 tzdata 都是最新的。 yum 上没有等待更新。
[ec2-user@ip-xxx-xx-xx-xxx ~]$ echo $TZ
[ec2-user@ip-xxx-xx-xx-xxx ~]$ ls -l /etc/localtime
lrwxrwxrwx 1 root root 23 Dec 8 2015 /etc/localtime ->
/usr/share/zoneinfo/EST
我不知所措。有人知道会发生什么吗? Linux 不调整 DST 吗?
答案1
为了扩展我的评论,在大多数情况下,您想要选择与您的时区相对应的城市。您很可能不住在那个城市。在大多数情况下,它将是您所在州、国家或时区最大的城市之一。
例如,在加利福尼亚州我们使用Los_Angeles
(全名是America/Los_Angeles
)。
普通时区(例如 EST)通常不包含夏季和冬季时间的定义。它被视为通用时区。 UTC 也是这样一个通用时区。它也恰好是用作基准时间的一台计算机。它也不包括任何调整(即,没有闰秒,没有夏季/冬季变化,换句话说,时间是直接向前的)。所有其他时区现在显然都基于 UTC。
对于美国东海岸,我认为您应该使用America/New_York
.
在美国,我们为没有夏季/冬季变化的地方设置了几个专门的时区。例如,亚利桑那州从未使用过此类时钟更改。它始终保持在同一个时钟上。它有其特定的时区定义:America/Phenix
。阿拉斯加和夏威夷是另一个在冬季和夏季之间不改变时钟的州。
现在,我非常确定,在过去,我们只会使用 EST、CST、MST 或 PST 之一作为我们的计算机时区。这已经改变了,因为所有问题使用此类通用名称。如果您查看时区列表,您会发现时区数量非常多。当一个国家或另一个国家对其时区信息进行更改时,它们经常会得到更新。