Linux / Commande date : afficher et formater la date et l’heure

La commande date affiche la date et l’heure et permet de choisir leur format, notamment pour un journal ou un script. Utilisez +FORMAT pour la présentation et -u pour le temps universel coordonné (UTC). Avec GNU date, -d interprète une date à afficher sans régler l’horloge du système.

Afficher l’heure et choisir un format

Commencez par une consultation simple, sans droits d’administration :

date

La sortie dépend du fuseau horaire et de la locale, qui détermine notamment la langue des noms de jours et de mois. Elle n’a donc pas exactement la même forme sur toutes les machines. La syntaxe de consultation est la suivante ; les crochets indiquent les éléments facultatifs et ne se saisissent pas :

date [OPTIONS] [+FORMAT]

Un format numérique explicite convient mieux à un nom de fichier ou à un traitement automatisé :

date '+%Y-%m-%d'
date '+%Y-%m-%d %H:%M:%S %z'

Le premier affiche année-mois-jour. Le second ajoute l’heure et le décalage numérique par rapport à UTC, par exemple +0900. Les valeurs correspondent à l’instant de chaque appel : deux commandes séparées ne constituent pas une lecture atomique de la même seconde. Gardez le format entre guillemets lorsqu’il contient des espaces.

Code Signification
%Y Année, par exemple 2026.
%m et %d Mois et jour du mois sur deux chiffres.
%H Heure sur 24 heures.
%M et %S Minutes et secondes sur deux chiffres.
%z Décalage du fuseau par rapport à UTC.

La casse compte : %m désigne le mois, tandis que %M désigne les minutes. Un résultat plausible peut donc être erroné si vous inversez ces deux codes.

Distinguer l’heure locale et UTC

Sans -u, date emploie les règles du fuseau indiquées par la variable TZ, ou celles du système si TZ n’est pas définie. L’option -u demande un affichage en UTC pour cet appel ; elle ne reconfigure pas le fuseau de la machine.

date -u '+%Y-%m-%dT%H:%M:%SZ'
date -u '+%Y-%m-%d %H:%M UTC'

Dans le premier format, T et Z sont des caractères littéraux. Z indique UTC : ne l’ajoutez pas à une heure locale sans demander réellement UTC avec -u. Pour comparer des journaux de plusieurs serveurs, un horodatage en UTC ou comportant son décalage évite de confondre des heures locales identiques dans des fuseaux différents.

Interpréter une date sans modifier l’horloge

GNU date accepte -d suivi d’une date à interpréter. L’exemple fixe ci-dessous permet de vérifier le format sans attendre une heure particulière :

date -u -d '2026-09-28 00:00:00 UTC' '+%Y-%m-%dT%H:%M:%SZ'

Résultat attendu :

2026-09-28T00:00:00Z

La date passée avec -d remplace l’instant à afficher, pas l’heure du système. Une entrée numérique avec année complète et fuseau explicite évite les ambiguïtés de langue et d’ordre jour/mois. Une entrée invalide provoque un diagnostic et un statut d’échec ; dans un script, vérifiez ce statut avant de réutiliser la sortie.

Choisir les options et éviter les changements involontaires

Option Utilisation
-u Afficher et interpréter les dates en UTC.
-I Afficher la date ISO 8601, équivalente ici au format %Y-%m-%d.
-Iseconds Ajouter heure, secondes et décalage de fuseau au format ISO 8601.
-d 'DATE' Afficher une date donnée avec GNU date.
date -I
date -Iseconds

Ce guide vise GNU date, courant sur les distributions Linux. -d et -I sont des extensions GNU et ne se transposent pas telles quelles à toutes les variantes BSD ou à d’autres implémentations. Consultez le manuel installé si une option est refusée.

L’option -s ou --set sert, elle, à changer réellement l’heure. La forme historique composée de chiffres peut aussi demander un réglage ; pour une simple consultation, utilisez les formes +FORMAT ou -d expliquées ici. Un changement d’horloge peut perturber les journaux, l’authentification et les tâches planifiées. Il demande une procédure d’administration et une vérification de la synchronisation, au-delà d’un choix de format d’affichage.

Le manuel GNU date précise les règles de locale et de fuseau. Sa documentation des options de date distingue les opérations d’affichage, d’interprétation et de réglage.