web-dev-qa-db-fra.com

Réglage du fuseau horaire sous Linux

Je règle le fuseau horaire sur GMT + 6 sur ma machine Linux en copiant le fichier zoneinfo sur /etc/localtime, mais la commande date affiche toujours l'heure sous la forme UTCtime-6. Quelqu'un peut-il m'expliquer ce comportement?

Je suppose que la commande date devrait afficher UTCtime+6 temps. Voici les étapes que je suis en train de suivre:

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

Jetez un oeil à cet article de blog intitulé: Comment: 2 méthodes pour changer TimeZone sous Linux .

Distributions Red Hat

Si vous utilisez une distribution telle que Red Hat, votre approche de copie du fichier serait généralement acceptable.

REMARQUE: Si vous cherchez une solution distro-agnostique, cela fonctionne également sur Debian, bien qu'il existe des approches plus simples ci-dessous si vous avez seulement besoin d'être concernés par les machines 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         

Je recommanderais cependant de créer un lien vers celui-ci plutôt que de le copier.

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

Maintenant, la date montre les différents fuseaux horaires:

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

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

Ubuntu/Debian Distros

Pour modifier le fuseau horaire sur l'une de ces distributions, vous pouvez utiliser cette commande:

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

Maintenant, quand nous le vérifions:

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

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

REMARQUE: Il existe également cette option dans Ubuntu 14.04 et supérieur avec une seule commande (source: Ask Ubuntu - définition du fuseau horaire depuis le terminal ):

$ Sudo timedatectl set-timezone Etc/GMT-6

Sur l'utilisation de "Etc/GMT + 6"

extrait de @ Réponse de MattJohnson sur SO

Des zones comme Etc/GMT+6 sont intentionnellement inversés pour une compatibilité ascendante avec les normes POSIX. Voir les commentaires dans ce fichier .

Vous ne devriez presque jamais avoir besoin d'utiliser ces zones. Au lieu de cela, vous devez utiliser un fuseau horaire entièrement nommé comme America/New_York ou Europe/London ou tout ce qui est approprié pour votre emplacement. Reportez-vous à la liste ici .

291
slm

C'est comme ça que je le fais dans Ubuntu. Remplacez simplement Asia/Tokyo avec votre propre fuseau horaire.

echo 'Asia/Tokyo' | Sudo tee /etc/timezone

Sudo dpkg-reconfigure -f noninteractive tzdata

Il y a bug dans tzdata: certaines valeurs sont normalisées par 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 la commande est faite pour faire ce que vous voulez.

17
SHW