比较 bash 中的 2 个日期

Comparing 2 dates in bash

所以我试图比较 bash 中的 2 个日期,但我的日期包含 Jan 或 Monday 等字符。 我可以直接比较它们还是我需要像这样“20201607”(以及我该怎么做)来格式化它们然后它们在数字上比较它们? 谢谢 例如:

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

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

基本上我的功能将 return 未发生 atm 的日期。

通过指定 %s 和日期等,使用自纪元(1970-01-01 UTC)以来的秒数:

day='21 Jan 2021'
if [[ "$(date +%s)" -lt "$(date -d "$day" +%s)" ]];
then 
    echo "$day";
fi

Zenity 可以帮助您:告诉 zenity 您想要什么输出日期格式:

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