Linux

Linux 中的時區設置

  • November 2, 2019

我通過將 zoneinfo 文件複製到 ,在我的 Linux 機器上將時區設置為 GMT+6 /etc/localtime,但該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

看看這篇標題為:How To: 2 Methods To Change TimeZone in Linux的博文。

紅帽發行版

如果您使用的是 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         

我建議連結到它而不是複制。

$ sudo unlink /etc/localtime 
$ sudo ln -s /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

現在日期顯示不同的時區:

$ date -u
Thu Jan 23 05:40:31 UTC 2014

$ date 
Wed Jan 22 23:40:38 GMT+6 2014

Ubuntu/Debian 發行版

要更改這些發行版中的任何一個的時區,您可以使用以下命令:

$ sudo dpkg-reconfigure tzdata

    #1

$ 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.

現在當我們檢查它時:

$ date -u
Thu Jan 23 05:53:32 UTC 2014

$ date 
Thu Jan 23 11:53:33 GMT-6 2014

**注意:**在 Ubuntu 14.04 及更高版本中也有此選項,使用單個命令(來源:Ask Ubuntu - setting timezone from terminal):

$ sudo timedatectl set-timezone Etc/GMT-6

關於“Etc/GMT+6”的使用

摘自@MattJohnson 對 SO 的回答

Etc/GMT+6為了向後兼容 POSIX 標準,故意反轉了類似的區域。請參閱此文件中的註釋。

您幾乎不需要使用這些區域。相反,您應該使用完全命名的時區,例如America/New_YorkEurope/London適合您所在位置的任何時區。請參閱此處的列表。

引用自:https://unix.stackexchange.com/questions/110522