Linux 中的时区设置

5 linux time date time-zone

我通过将 zoneinfo 文件复制到/etc/localtime,在我的 Linux 机器上设置时区 GMT+6 ,但 date 命令显示时间 UTCtime-6。这种行为的原因是什么?

我假设 date 命令应该显示 UTCtime+6 时间。以下是我正在执行的步骤:

date
Wed Jan 22 17:29:01 IST 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

cp /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

date
Wed Jan 22 05:59:21 GMT+6 2014

date -u
Wed Jan 22 11:59:01 UTC 2014
Run Code Online (Sandbox Code Playgroud)

Mat*_*int 12

Etc/GMT+6为了与 POSIX 标准向后兼容,有意颠倒类似区域。请参阅Wikipedia 上的评论以及来自 tzdb 的此文件中的评论

您几乎不需要使用这些区域。相反,您应该使用完全命名的时区,例如America/New_YorkEurope/London或任何适合您所在位置的时区。请参阅Wikipedia 上的 tz 数据库时区列表

  • 时区与*时区偏移*不同。您不只是设置 `+6`,而是设置 `Etc/GMT+6`,这是 zoneinfo 数据中非常具体的条目,意思是“格林威治标准时间以西 6 小时”,通常使用的是 `-6 `. 如果你真的想要 `+6`,那么你应该设置一个类似 `Etc/GMT-6` 的区域,或者你可以使用一个具有 +6 偏移量的命名区域。另请参阅 [时区标签维基](http://stackoverflow.com/tags/timezone/info)。 (6认同)