Sammenlikning av to datoer

Bash:
Sammenlikning av to datoer

How to:

Sammenlign to datoer med følgende Bash-kommandoer. Først, bruk date kommandoen til å konvertere datoer til sekunder siden Unix-epoken. Deretter sammenlign verdiene med -lt, -gt, eller -eq.

# Sett datoene
DATE1="2023-04-01"
DATE2="2023-04-15"

# Konverter datoene til sekunder siden epoch
SECONDS1=$(date -d "$DATE1" +%s)
SECONDS2=$(date -d "$DATE2" +%s)

# Sammenlign datoene
if [ "$SECONDS1" -lt "$SECONDS2" ]; then
    echo "DATE1 er tidligere enn DATE2"
elif [ "$SECONDS1" -gt "$SECONDS2" ]; then
    echo "DATE1 er senere enn DATE2"
else
    echo "Datoene er like"
fi

Eksempel på utdata:

DATE1 er tidligere enn DATE2

Deep Dive:

Før date kommandoen, brukte mange en lang rekke av Perl eller Python-scripts for å sammenligne datoer. En alternativ tilnærming er å bruke et program som datediff fra dateutils. I forhold til implementasjon, så er nøkkelen i Bash å konvertere datoer til et format som lett lar seg sammenligne - som sekunder siden Unix-epoken.

Husk at tidssoner kan påvirke resultatet av sammenligningen, så det er best å holde seg til UTC for konsistens. Bash har ikke innebygget støtte for kompleks dato-håndtering, så for mer avanserte behov kan det være lurt å se mot andre verktøy eller språk.

See Also: