Rah*_*obi 182 linux date time timezone
我通过将 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)
slm*_*slm 311
看看这篇博客文章,标题是:如何:在 Linux 中更改时区的 2 种方法。
如果您使用的是 Red Hat 之类的发行版,那么您复制文件的方法通常是可以接受的。
注意:如果您正在寻找与发行版无关的解决方案,这也适用于 Debian,但如果您只需要关注 Debian 机器,下面有更简单的方法。
$ ls /usr/share/zoneinfo/
Africa/ CET Etc/ Hongkong Kwajalein Pacific/ ROK zone.tab
America/ Chile/ Europe/ HST Libya Poland Singapore Zulu
Antarctica/ CST6CDT GB Iceland MET Portugal Turkey
Arctic/ Cuba GB-Eire Indian/ Mexico/ posix/ UCT
Asia/ EET GMT Iran MST posixrules Universal
Atlantic/ Egypt GMT0 iso3166.tab MST7MDT PRC US/
Australia/ Eire GMT-0 Israel Navajo PST8PDT UTC
Brazil/ EST GMT+0 Jamaica NZ right/ WET
Canada/ EST5EDT Greenwich Japan NZ-CHAT ROC W-SU
Run Code Online (Sandbox Code Playgroud)
但是,我建议链接到它而不是复制。
$ sudo unlink /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime
Run Code Online (Sandbox Code Playgroud)
现在日期显示不同的时区:
$ date -u
Thu Jan 23 05:40:31 UTC 2014
$ date
Wed Jan 22 23:40:38 GMT+6 2014
Run Code Online (Sandbox Code Playgroud)
要更改这些发行版中的任何一个的时区,您可以使用以下命令:
$ sudo dpkg-reconfigure tzdata
Run Code Online (Sandbox Code Playgroud)

$ sudo dpkg-reconfigure tzdata
Current default time zone: 'Etc/GMT-6'
Local time is now: Thu Jan 23 11:52:16 GMT-6 2014.
Universal Time is now: Thu Jan 23 05:52:16 UTC 2014.
Run Code Online (Sandbox Code Playgroud)
现在,当我们检查它时:
$ date -u
Thu Jan 23 05:53:32 UTC 2014
$ date
Thu Jan 23 11:53:33 GMT-6 2014
Run Code Online (Sandbox Code Playgroud)
注意:在 Ubuntu 14.04 及更高版本中也有这个选项,只需一个命令(来源:Ask Ubuntu - setting timezone from terminal):
$ sudo timedatectl set-timezone Etc/GMT-6
Run Code Online (Sandbox Code Playgroud)
Etc/GMT+6为了与 POSIX 标准向后兼容,有意颠倒类似区域。请参阅此文件中的注释。您几乎不需要使用这些区域。相反,您应该使用完全命名的时区,例如
America/New_York或Europe/London或任何适合您所在位置的时区。请参阅此处的列表。
小智 27
这就是我在 Ubuntu 中的做法。只需替换Asia/Tokyo为您自己的时区。
echo 'Asia/Tokyo' | sudo tee /etc/timezone
sudo dpkg-reconfigure -f noninteractive tzdata
有一个错误在tzdata:某些价值得到归经dpkg-reconfigure:
echo 'US/Central' >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
# Current default time zone: 'America/Chicago'
echo 'US/Eastern' >/etc/timezone
apt-get install --reinstall tzdata
# Current default time zone: 'America/New_York'
Run Code Online (Sandbox Code Playgroud)