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 TZparamètre et la datecommande. Dans un rcshell Bourne-like et-like , la TZvariable n'est définie que pour la ligne de commande. Dans d' autres coquilles ( csh, tcsh, fish), vous pouvez toujours utiliser la envcommande à 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/zoneinforé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_Yorkutilisé 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ù stdest le nom du composant standard et celui de dstl'heure d'été. Chaque nom est composé de trois caractères ou plus. Il offsetest 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 startet endheure 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/tztabet 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.