Comment vérifier quel fuseau horaire sous Linux ?
Y a-t-il un moyen de vérifier dans quel fuseau horaire je me trouve actuellement sous Linux ?
Y a-t-il un moyen de vérifier dans quel fuseau horaire je me trouve actuellement sous Linux ?
Si vous voulez le fuseau horaire numérique :
date +'%:z %Z'
Exemple de sortie :
-05:00 EST
Je voulais plutôt trouver le fuseau horaire sous la forme “US/Eastern” ou “Europe/Londres”. Vous pouvez trouver cela dans :
ZONE="US/Eastern"
dans /etc/sysconfig/clock Habituellement, la variable d'environnement TZ
vous dira quelque chose d'utile. Cependant, il est préférable d'utiliser des fonctions telles que mktime()
et localtime()
pour convertir entre time_t
et une représentation locale du fuseau horaire. Autrement dit, n'essayez pas de faire la conversion vous-même.
Pour ubuntu essayez ceci :
$ cat /etc/timezone
Sample output :
Asia/Kolkata
Pour d'autres distributions Référence : https://unix.stackexchange.com/questions/110522/timezone-setting-in-linux
Parfois, vous pouvez rechercher le fuseau horaire canonique plutôt que la forme courte telle que produite par date %Z
, par exemple US/Eastern
. Sur les systèmes avec timedatectl
par exemple Fedora, timedatectl
produit beaucoup d'informations utiles, y compris la zone actuelle :
# timedatectl
Local time: Tue 2016-09-13 17:10:26 EDT
Universal time: Tue 2016-09-13 21:10:26 UTC
RTC time: Tue 2016-09-13 21:10:26
Time zone: US/Eastern (EDT, -0400)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
Malheureusement, timedatectl
prend set-timezone
comme commande, mais n'a pas de get-timezone
correspondant. L'analyser comme suit :
# timedatectl status | grep "zone" | sed -e 's/^[]*Time zone: \(.*\) (.*)$//g'`
US/Eastern
$ strings /etc/localtime | tail -n 1
MST7MDT,M3.2.0,M11.1.0
Je suis donc sur Mountain Time. Bien que les conseils ci-dessus sur l'utilisation des variables d'environnement ou simplement de la sortie des commandes de date fonctionnent parfois mieux, selon l'utilisation que vous voulez en faire.
Pour le fuseau horaire, vous pouvez utiliser la géolocalisation :
$ curl https://ipapi.co/timezone
America/Chicago
Ou :
$ curl http://ip-api.com/line?fields=timezone
America/Chicago
Vous pouvez afficher la date et le fuseau horaire simultanément :
date +'%d/%m/%Y %H:%M:%S [%:z %Z]'
Parfois timedatectl set-timezone
ne met pas à jour /etc/timezone
, il est donc préférable d'obtenir la tiemzone à partir du nom du fichier vers lequel le lien symbolique /etc/timezone
pointe :
#!/bin/bash
set -euo pipefail
if filename=$(readlink /etc/localtime); then
# /etc/localtime is a symlink as expected
timezone=${filename#*zoneinfo/}
if [[$timezone = "$filename" || ! $timezone =~ ^[^/]+/[^/]+$ ]]; then
# not pointing to expected location or not Region/City
>&2 echo "$filename points to an unexpected location"
exit 1
fi
echo "$timezone"
else # compare files by contents
# https://stackoverflow.com/questions/12521114/getting-the-canonical-time-zone-name-in-shell-script#comment88637393_12523283
find /usr/share/zoneinfo -type f ! -regex ".*/Etc/.*" -exec \
cmp -s {} /etc/localtime \; -print | sed -e 's@.*/zoneinfo/@@' | head -n1
fi
Références : dans cette réponse .
L'utilisation de TZ ou de la date N'EST PAS FIABLE car elle vous indique le fuseau horaire de l'UTILISATEUR, et non le fuseau horaire par défaut du système.
Le fuseau horaire par défaut du système est stocké dans /etc/timezone (qui est souvent un lien symbolique vers le fichier de données spécifique au fuseau horaire). Si vous n'avez pas de /etc/timezone, consultez /etc/localtime. Il s'agit généralement du fuseau horaire du “serveur”. /etc/localtime est souvent un lien symbolique vers un fichier de fuseau horaire dans /usr/share/zoneinfo. Ce chemin vers le bon fichier de fuseau horaire vous donnera aussi souvent des informations géographiques.
Les linux plus récents ont “timedatectl” qui vous donne des tonnes d'informations lorsque la commande est exécutée.
(en marge, si vous avez un ancien système qui utilise encore les anciens fuseaux horaires codés en dur, vous pouvez probablement y copier un fichier de fuseau horaire moderne et cela fonctionnera. J'ai dû faire cela à de nombreuses reprises pour résoudre le problème des changements de fuseau horaire sur des équipements plus anciens).