在外壳中将给定日期与今天的日期进行比较



我想比较一个给定的日期

date1=周三 01 八月 10:03:52 EDT 2018

今天的"日期"命令在外壳中。

如果给定日期早于今天日期的 7 天,则回显 true

在 GNU date 中,您可以使用date -d "$date1" +%s来解析日期字符串并将其转换为自 1970-01-01 00:00:00 UTC 以来的秒数。

您可以将其与date +%s的结果进行比较,这将以相同的格式为您提供当前日期。

如果是标准date格式:

date1="Tue Sep 25 11:32:09 EDT 2018"
now=$(date +%s)
cond=$(( $(date -d "$date1" +%s) + 7*24*60*60 ))
if [ $now -ge $cond ]
then
echo True
fi

如果问题(date1=Wed 01 Aug 10:03:52 EDT 2018(中有新的无法识别的格式,您可以将日期和月份与以下条件交换:

date1="Wed 01 Aug 10:03:52 EDT 2018"
date1=$(echo $date1 | sed -E 's/(Sun|Mon|Tue|Wed|Thu|Fri|Sat).([0-9]{2}).(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/1 3 2/')

其余的都是一样的

如果是其他任意格式,您必须使用正则表达式将其解开并转换为date可以识别的东西。

+%s以秒为单位格式化输出。

-d DATE使用指定的日期字符串而不是当前时间。

sed匹配正则表达式并替换它

相关内容

  • 没有找到相关文章