Bash:
Comparer deux dates

Comment faire :

#!/bin/bash

# Date 1 in YYYY-MM-DD
date1="2023-04-01"
# Date 2 in YYYY-MM-DD
date2="2023-04-15"

# Compare using date command
if [ "$(date -d "$date1" +%s)" -lt "$(date -d "$date2" +%s)" ]; then
    echo "La date1 est antérieure à la date2."
elif [ "$(date -d "$date1" +%s)" -gt "$(date -d "$date2" +%s)" ]; then
    echo "La date1 est postérieure à la date2."
else
    echo "Les deux dates sont identiques."
fi

Sortie attendue :

La date1 est antérieure à la date2.

Plongée Profonde

Historiquement, comparer des dates en Bash était un peu laborieux avant l’introduction de certaines fonctionnalités de date et des calculs arithmétiques. Le format +%s convertit les dates en secondes depuis l’époque UNIX, facilitant la comparaison.

Comme alternative, dateutils est un ensemble d’outils puissant pour manipuler des dates. Il inclut datediff qui peut être utilisé pour comparer des dates directement.

En ce qui concerne les détails d’implémentation, prendre compte des fuseaux horaires et de l’heure d’été peut compliquer la comparaison directe des dates. Il convient donc de toujours comparer des dates normalisées en UTC pour éviter les pièges.

Voir également