Monday, March 14, 2022

[SOLVED] Comparing 2 dates in bash

Issue

So I am trying to compare 2 dates in bash , but my dates contains characters like Jan or Monday . Can I compare them directly or do i need to format them like this "20201607"(and how do i do this plz) and them numerically compare them? Thank you For example:

today=$(date)
day='21 Jan 2021'

if [ $today < $day ]
   echo "$day"

basically my function will just return the dates who does not happened atm.


Solution

Zenity can help you: Tell zenity what output date format you want:

while ! date=$(zenity --calendar --date-format '%Y%m%d'); do
    # ...........................^^^^^^^^^^^^^^^^^^^^^^
    echo "Don't cancel the zenity window, select a day"
done

# bash v4.2+ can to date formatting
today=$(printf '%(%Y%m%d)T' -1)

if [ "$date" -gt "$today" ]; then
    echo "you entered a future date"
fi


Answered By - glenn jackman
Answer Checked By - Terry (WPSolving Volunteer)