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
Jetez un oeil à cet article de blog intitulé: Comment: 2 méthodes pour changer TimeZone sous Linux .
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
Pour modifier le fuseau horaire sur l'une de ces distributions, vous pouvez utiliser cette commande:
$ Sudo dpkg-reconfigure tzdata
$ 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
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
ouEurope/London
ou tout ce qui est approprié pour votre emplacement. Reportez-vous à la liste ici .
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'
tzselect la commande est faite pour faire ce que vous voulez.