SpruceTips Asked: 2019-02-23 17:52:46 +0800 CST2019-02-23 17:52:46 +0800 CST 2019-02-23 17:52:46 +0800 CST 如何将时区设置为 UTC-8 772 我需要将我的时区设置为 UTC -8,我只看到设置为 PST 或 GMT-8 的选项。有没有办法让它显示为UTC-8? 我正在运行 RHEL6。 $ 日期 2019 年 2 月 23 日星期六 01:41:41 UTC linux timezone 1 个回答 Voted Best Answer Michael Homer 2019-02-23T20:06:29+08:002019-02-23T20:06:29+08:00 你没有说你在哪里设置这个时区,但你可以在TZ环境变量中发明任何你喜欢的区域名称: $ TZ='<UTC-8>+8' date Fri Feb 22 19:25:36 UTC-8 2019 这+8是因为 POSIX 愚蠢地要求偏移量向后(向西增加);in 部分<...>是显示的名称,可以是任何单个单词。如果它是纯字母,则不需要尖括号,但-and8需要它们。 $ TZ='<yesterday>24' date Fri Feb 22 03:30:15 yesterday 2019 $ TZ='tomorrow-24' date Sun Feb 24 03:30:26 tomorrow 2019 如果您使用的是 GUI 或其他区域选择工具,它可能正在寻找/usr/share/zoneinfo系统中包含的区域定义。如果您希望另一个区域显示在该列表中,则需要制作一个合适的 zoneinfo 文件并将其复制到位。该zic工具用于从文本格式编译 zoneinfo 文件,这相对简单(特别是在仅修改现有区域以更改名称时)。 在某些系统上(但我认为 Red Hat 不是),有一个文件/etc/timezone可以将时区全局设置为名称,您可以TZ在其中使用该变量格式。其他系统只使用/etc/localtime,它通常是其中一个 zoneinfo 文件的副本,因此您也需要在那里制作一个合适的文件。 对于 per-user 或 -session 区域,您只能使用环境变量。 如果您将区域设置为“ UTC-8”或其他未明确定义的区域,则将其视为两件事:首先,区域的名称(“UTC”:任何字母字符串),其次是 POSIX 中的偏移量方向(无论有什么数字)。这意味着TZ=UTC-8 date将输出类似 Sat Feb 23 11:50:01 UTC 2019 - 即它报告中国或西澳大利亚的时间,并认为该区域称为“UTC”。当您打错字时,这种行为非常令人困惑和烦人。这可能是您在问题中包含的输出的原因,但我无法确定。 这被解析为传统的、大部分已过时的 POSIX 时区格式RST6RDT5,M10.3.0/00:00:00,M2.4.0/00:00:00,其中包括标准和夏令时的可选名称和偏移量,以及两者之间的转换日期。对于任何重要的区域,这种方法都有很多缺点,并且它不会像区域文件那样跟踪定义的历史变化。 “正确”的做法是使用显示为 PST 的 America/Los_Angeles 区域,或者如果您不能使用名称或不想更改夏令时,则使用 Etc/GMT+8。GMT+8 将偏移量显示为“-08”,没有文本标签。有时,所谓正确的事情还不够好,在这种情况下,上述之一应该没问题。
你没有说你在哪里设置这个时区,但你可以在
TZ
环境变量中发明任何你喜欢的区域名称:这
+8
是因为 POSIX 愚蠢地要求偏移量向后(向西增加);in 部分<...>
是显示的名称,可以是任何单个单词。如果它是纯字母,则不需要尖括号,但-
and8
需要它们。如果您使用的是 GUI 或其他区域选择工具,它可能正在寻找
/usr/share/zoneinfo
系统中包含的区域定义。如果您希望另一个区域显示在该列表中,则需要制作一个合适的 zoneinfo 文件并将其复制到位。该zic
工具用于从文本格式编译 zoneinfo 文件,这相对简单(特别是在仅修改现有区域以更改名称时)。在某些系统上(但我认为 Red Hat 不是),有一个文件
/etc/timezone
可以将时区全局设置为名称,您可以TZ
在其中使用该变量格式。其他系统只使用/etc/localtime
,它通常是其中一个 zoneinfo 文件的副本,因此您也需要在那里制作一个合适的文件。对于 per-user 或 -session 区域,您只能使用环境变量。
如果您将区域设置为“
UTC-8
”或其他未明确定义的区域,则将其视为两件事:首先,区域的名称(“UTC”:任何字母字符串),其次是 POSIX 中的偏移量方向(无论有什么数字)。这意味着TZ=UTC-8 date
将输出类似- 即它报告中国或西澳大利亚的时间,并认为该区域称为“UTC”。当您打错字时,这种行为非常令人困惑和烦人。这可能是您在问题中包含的输出的原因,但我无法确定。
这被解析为传统的、大部分已过时的 POSIX 时区格式
RST6RDT5,M10.3.0/00:00:00,M2.4.0/00:00:00
,其中包括标准和夏令时的可选名称和偏移量,以及两者之间的转换日期。对于任何重要的区域,这种方法都有很多缺点,并且它不会像区域文件那样跟踪定义的历史变化。“正确”的做法是使用显示为 PST 的 America/Los_Angeles 区域,或者如果您不能使用名称或不想更改夏令时,则使用 Etc/GMT+8。GMT+8 将偏移量显示为“-08”,没有文本标签。有时,所谓正确的事情还不够好,在这种情况下,上述之一应该没问题。