השוואת שתי תאריכים

Bash:
השוואת שתי תאריכים

איך לעשות:

להלן דוגמאות לשימוש בתסריטי Bash להשוואת תאריכים:

# הגדרת שני תאריכים בפורמט YYYY-MM-DD
date1="2023-02-10"
date2="2023-02-15"

# המרת התאריכים לפרמט תאריך שניתן להשוואה
sec1=$(date -d "$date1" +%s)
sec2=$(date -d "$date2" +%s)

# בדיקת מי מהם קודם לכן והדפסת התוצאה
if [ $sec1 -lt $sec2 ]; then
    echo "$date1 is earlier than $date2"
elif [ $sec1 -gt $sec2 ]; then
    echo "$date2 is earlier than $date1"
else
    echo "Both dates are the same"
fi

פלט לדוגמה:

2023-02-10 is earlier than 2023-02-15

עיון מעמיק:

השוואת תאריכים ב-Bash מתבצעת על ידי המרת התאריכים לשניות מאז התאריך המסוימת (epoch time) ולאחר מכן השוואת המספרים. תאריכים במערכות הפעלה מודרניות מתחילים להיספר מהתאריך 1 בינואר 1970 (הנקרא Unix epoch). קיימים תסריטים חלופיים, כמו למשל פקודת [[ $date1 < $date2 ]], אבל הם פחות נפוצים ולא תמיד מדויקים בגלל פורמטים שונים. אין טיפול ישיר ב-Bash באזורים זמניים או שמירת שעון קיץ, לכן צריך להקפיד להשוואה באזור זמן קבוע או לבצע המרות מתאימות.

ראה גם: