我想将 Linux 盒子配置为使用 CST,无需日光。我的第一个想法是使用UTC-06
区域文件,但由于某些奇怪的原因它提供 UTC+6,而不是 UTC-6 时间!
之后我读了tz 数据库时区列表维基百科上的文章,并将America/Costa_Rica
区域文件复制到/etc/localtime
.现在时区似乎没问题,但如果有一天哥斯达黎加政府决定改为白天怎么办?
为 Linux 设置 UTC-6 的正确方法是什么?
答案1
来自维基百科的文章兹数据库:
Etc 的特殊区域用于某些行政区域,特别是代表协调世界时的“Etc/UTC”。为了符合POSIX风格,那些以“Etc/GMT”开头的区域名称的符号与大多数人期望的相反。在这种风格中,GMT 以西的区域名称中带有正号,而以东的区域名称中带有负号(例如“Etc/GMT-14”是 GMT 之前/以东 14 小时。)
因此,如果您正在寻找完全没有夏令时的固定 UTC-6 时区,您应该使用Etc/GMT+6
# zdump /usr/share/zoneinfo/Etc/GMT+6 /usr/share/zoneinfo/America/Costa_Rica
/usr/share/zoneinfo/Etc/GMT+6 Sun Nov 13 09:23:52 2011 GMT+6
/usr/share/zoneinfo/America/Costa_Rica Sun Nov 13 09:23:52 2011 CST
这确实令人困惑,但是嘿,它有效。所以:
ln -sf /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime
应该可以解决问题。
您不应将 zoneinfo 文件复制到您的/etc/localtime
,而应使用符号链接。这样,如果更新了 zoneinfo 数据库,您的系统将看到更改。 (不过在这种情况下并不重要。)
答案2
您确定永远不想使用夏令时?如果该地方的政府你live 决定使用它吗?让你的计算机与现实世界不同步一个小时的目的是什么?
无论如何,设置TZ=CST6
- 这不是存在于 zoneinfo 中的时区,它是较旧的环境变量标准。如果您想要一个实际的区域信息文件[可用于本地时间],请编译(使用zic
)由单行组成的源文件:
Zone Etc/CST6 -6:00 - CST
并使用TZ=Etc/CST6
并将生成的文件链接/复制到 /etc/localtime 中。
这样做的优点是使用正确的缩写而不是无意义的“GMT+06”
答案3
ln -sf /usr/share/zoneinfo/America/Costa_Rica /etc/localtime
时区更新包含在 Linux 发行版的更新中,因此您可以安全地使用 Costa_Rica 特定区域文件。
答案4
尝试萨斯喀彻温省里贾纳。该时区没有夏令时。
编辑:虽然该省的城市遵循寄宿省份的时区,但该省从未遵循夏令时。由于它们确实位于山区时区,因此它们实际上享有永久夏令时。虽然他们可能会切换到山区时间并开始使用夏令时规则,但没有政治意愿这样做。无论如何,您选择的时区将来都有可能发生规则更改的风险。只要看看一些州的时区,它们就会分为三个级别来处理州内特殊的时区划分。