Vous pouvez définir un fuseau horaire pour la durée de la requête, ainsi:
TZ=America/New_York date
Notez les espaces entre le TZ
paramètre et la date
commande. Dans un rc
shell Bourne-like et-like , la TZ
variable n'est définie que pour la ligne de commande. Dans d' autres coquilles ( csh
, tcsh
, fish
), vous pouvez toujours utiliser la env
commande à la place:
env TZ=America/New_York date
tl; dr
Sur les systèmes Linux. Les fuseaux horaires sont définis dans les fichiers du /usr/share/zoneinfo
répertoire. Cette structure est souvent appelée "base de données Olson" pour honorer son contributeur fondateur.
Les règles de chaque fuseau horaire sont définies comme des lignes de fichier texte qui sont ensuite compilées dans un fichier binaire. Les lignes ainsi compilées définissent le nom de la zone. une plage de données et de temps pendant lesquels la zone s’applique; un décalage par rapport à l'heure UTC pour l'heure standard; et la notation permettant de définir le cas échéant le passage à l'heure d'été ou à l'heure d'été.
Par exemple, le répertoire "America" contient les informations requises pour New York dans le fichier America/New_York
utilisé ci-dessus.
Attention, la spécification d'une zone inexistante (nom de fichier) est ignorée et les heures UTC sont signalées. Par exemple, cela signale une heure incorrecte:
TZ="America/New York" date ### WRONG ###
La spécification UNIX unique, version 3, appelée SUSv3 ou POSIX-2001, indique que, pour des raisons de portabilité, la chaîne de caractères identifiant la description du fuseau horaire doit commencer par un caractère deux-points. Ainsi, on peut aussi écrire:
TZ=":America/New_York" date
TZ=":America/Los_Angeles" date
En tant que méthode alternative à la spécification de fuseaux horaires utilisant un chemin d'accès à un fichier de description, SUSv3 décrit le modèle POSIX. Dans ce format, une chaîne est définie comme suit:
std offset [dst[offset][,start-date[/time],end-date[/time]]]
où std
est le nom du composant standard et celui de dst
l'heure d'été. Chaque nom est composé de trois caractères ou plus. Il offset
est positif pour les fuseaux horaires situés à l'ouest du premier méridien et négatif pour ceux situés à l'est du méridien. Le décalage est ajouté à l'heure locale pour obtenir l'UTC (anciennement GMT). Les champs start
et end
heure indiquent quand les transitions standard / lumière du jour ont lieu.
Par exemple, dans l’est des États-Unis, l’heure standard est 5 heures plus tôt que UTC, et nous pouvons spécifier EST5EDT
à la place de America/New_York
. Toutefois, ces solutions de remplacement ne sont pas toujours reconnues, en particulier pour les zones situées en dehors des États-Unis, et il vaut mieux les éviter.
HP-UX (UNIX compatible SUSv3) utilise des règles textuelles /usr/lib/tztab
et les noms POSIX tels que EST5EDT, CST6CDT, MST7MDT, PST8PDT. Le fichier comprend toutes les règles historiques de chaque fuseau horaire, semblables à la base de données Olson.
REMARQUE: Vous devriez être en mesure de trouver tous les fuseaux horaires en inspectant le répertoire suivant: /usr/share/zoneinfo
.