Cédric Temple

Administrateur système en logiciels libres

date, commande pour travailler sur les dates

2019-05-14 » notes pour plus tard

Ce contenu est fourni sous licence CC BY-NC-SA 4.0

Informations essentielles sur la commande date

Introduction

La commande date permet de travailler sur les dates, notamment avoir une sortie particulière, avoir la date d’hier ou de demain, de voir l’heure dans un autre fuseau horaire et de faire des calculs de date.

Afficher la date sous un certain format

L’utilisation la plus courante de la commande date est d’afficher la date du jour :

cedric@portable:~$ date
mardi 14 mai 2019, 09:48:03 (UTC+0200)

On peut afficher la date sous un format précis afin de se faciliter la vie. Par exemple, lorsque l’on fait des dump de base de données, des archives de certains dossiers, on génère une date pour nommer le résultat :

# On affiche la date du jour selon le format ANNEE-MOIS-JOUR
cedric@portable:~$ date +%Y-%m-%d
2019-05-14

Il faut alors savoir que :

  • %Y correspond à l’année en cours sur 4 chiffres
  • %m correspond au mois en cours au format numérique et sur 2 chiffres (janvier sera affiché 01)
  • %d correspond au jour du mois (day) en cours au format numérique et sur 2 chiffres (le 1er du mois sera affiché 01)

On peut afficher d’autres choses :

  • %F correspond à %Y-%m-%d (mais je n’arrive jamais à le retenir alors je tape systématique %Y-%m-%d)
  • %H correspond à l’heure sur 2 chiffres
  • %M correspond à la minute sur 2 chiffres
  • %S correspond à la seconde sur 2 chiffres
  • %T correspond à %H:%M:%S (à titre personnel, je n’aime pas trop les : dans les noms de fichiers, je mets alors %Hh%Mmin%Ssec ou %Hh%Mm%Ss)
  • %u correspond au numéro de jour dans la semaine, sachant que le lundi est le premier jour et dimanche est le 7e jour
  • %w correspond au numéro de jour dans la semaine, sachant que le lundi est le premier jour et dimanche est le jour 0
  • %s est le nombre de secondes écoulées depuis epoch (1er janvier 1970 00:00:00 UTC)
  • %V le numéro de la semaine (en partant du principe que le lundi est le premier jour de la semaine) (donc, selon la recommandation ISO)
  • %A le nom du jour de la semaine (lundi, mardi, …) selon la locale actuelle du système
  • %a le nom abbrévié du jour de la semaine (lun., mar., …) selon la locale actuelle du système
  • %B le nom du mois (janvier, février, …) selon la locale actuelle du système
  • %b le nom abbrévié du mois (janv., févr., …) selon la locale actuelle du système

Quelques exemples :

# tous ces exemples sont faits à la date du 14 mai 2019, à 11h12 UTC+0200
cedric@portable:~$ date +"Nous sommes le : %Y-%m-%d_%H:%M:%S"
Nous sommes le : 2019-05-14_11:12:09
cedric@portable:~$ date +"Nous sommes le : %F_%T"
Nous sommes le : 2019-05-14_11:12:09
cedric@portable:~$ LANG=fr_FR.UTF-8 date +"Nous sommes le %A %d %B"
Nous sommes le mardi 14 mai
cedric@portable:~$ LANG=en_EN.UTF-8 date +"Today is %A, the %dth of %B"
Today is Tuesday, the 14th of May
cedric@portable:~$ date +'- Quelle heure est-il ?%n- Il est: %H heures %M minutes et %S secondes%n- Wahou merci, quelle précision !!!%n- pas tant précis que cela, vu que je ne t ai pas donné le fuseau horaire : %Z'
- Quelle heure est-il ?
- Il est: 11 heures 12 minutes et 10 secondes
- Wahou merci, quelle précision !!!
- pas tant précis que cela, vu que je ne t ai pas donné le fuseau horaire : CEST

Voir la date/l’heure dans un autre fuseau horaire

Il est possible de voir la date actuelle/l’heure actuelle dans un autre fuseau horaire :

cedric@portable:~$ date +'Paris : %T'; TZ='America/New_York' date +'New York : %T'; TZ='Europe/Moscow' date +'Moscou : %T'
Paris : 11:21:26
New York : 05:21:26
Moscou : 12:21:26

Faire des calculs sur les dates

Il est possible de connaitre la date de demain, d’hier, ou celle dans 3 jours ou du prochain mercredi ou une date très précise :

cedric@portable:~$ date -d 'today'
mardi 14 mai 2019, 11:23:39 (UTC+0200)
cedric@portable:~$ date -d 'yesterday'
lundi 13 mai 2019, 11:24:02 (UTC+0200)
cedric@portable:~$ date -d 'tomorrow'
mercredi 15 mai 2019, 11:24:07 (UTC+0200)
cedric@portable:~$ date -d '3 days ago'
samedi 11 mai 2019, 11:24:20 (UTC+0200)
cedric@portable:~$ date -d 'next wednesday'
mercredi 15 mai 2019, 00:00:00 (UTC+0200)
cedric@portable:~$ date -d 'now + 3 days'
vendredi 17 mai 2019, 11:25:26 (UTC+0200)
cedric@portable:~$ date -d 'now + 3 days 6 hours'
vendredi 17 mai 2019, 17:25:40 (UTC+0200)
cedric@portable:~$ date -d '9 february 2019 16 hours 16 minutes' +'Heure de Marc : %F %T'
Heure de Marc : 2019-02-09 16:16:00
cedric@portable:~$ date -d '9 february 2019 16 hours 16 minutes + 100 days' +'Heure de Marc + 100 jours: %F %T'
Heure de Marc + 100 jours: 2019-05-20 16:16:00

Ce contenu est fourni sous licence CC BY-NC-SA 4.0