Bash:
Confronto tra due date
Come Fare:
#!/bin/bash
# Formato data: AAAA-MM-GG
data1="2023-04-01"
data2="2023-04-10"
# Confronto tra date
if [[ "$data1" > "$data2" ]]; then
echo "La data1 è dopo la data2."
elif [[ "$data1" < "$data2" ]]; then
echo "La data1 è prima della data2."
else
echo "Le date sono uguali."
fi
# Differenza in giorni tra date
differenza=$(( ($(date -d "$data2" +%s) - $(date -d "$data1" +%s)) / 86400 ))
echo "Ci sono $differenza giorni di differenza tra le date."
Output:
La data1 è prima della data2.
Ci sono 9 giorni di differenza tra le date.
Approfondimento:
Comparare date è un bisogno antico quanto la storia dell’informatica. Prima che i sistemi operativi moderni e i linguaggi di programmazione offrissero strumenti integrati per gestire le date, i programmatori dovevano affidarsi a soluzioni manuali. In Bash, la comparazione di date si avvale della funzionalità di convertire le date in secondi da una data nota (l’epoch, iniziando dal 1 gennaio 1970) e di effettuare l’operazione aritmetica desiderata. Alternativamente, si possono usare strumenti come dateutils
o confrontare direttamente le stringhe se formattate correttamente. La scelta dell’approccio dipende dal contesto e dalla precisione richiesta.
Vedi Anche:
- GNU Coreutils: https://www.gnu.org/software/coreutils/manual/coreutils.html
- Dateutils: http://www.fresse.org/dateutils/
- Bash scripting cheatsheet: https://devhints.io/bash