web-dev-qa-db-ja.com

Linuxのタイムゾーン設定

Linuxマシンで、zoneinfoファイルを/etc/localtimeにコピーしてタイムゾーンを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
169
Rahul Dhobi

How To:2 Methods To Change TimeZone in Linux というタイトルのこのブログ投稿をご覧ください。

Red Hatディストリビューション

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 Distros

これらのディストリビューションのいずれかでタイムゾーンを変更するには、次のコマンドを使用できます。

$ Sudo dpkg-reconfigure tzdata

ss #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以降にも1つのコマンドで提供されています(ソース:Ask Ubuntu- ターミナルからタイムゾーンを設定 ):

$ Sudo timedatectl set-timezone Etc/GMT-6

「Etc/GMT + 6」の使用について

@ MattJohnson's answer on SO]からの抜粋

Etc/GMT+6のようなゾーンは、POSIX標準との下位互換性のために意図的に逆になっています。 このファイル のコメントを参照してください。

これらのゾーンを使用する必要はほとんどありません。代わりに、America/New_YorkEurope/Londonなどの完全に名前が付けられたタイムゾーン、または場所に適したものを使用する必要があります。リスト here を参照してください。

291
slm

これは私が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'
26
user241

tzselect コマンドはあなたが望むことをするように作られています。

17
SHW