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

时间:2018-09-25 15:45:56

标签: shell date compare

我想比较给定的日期

date1 = 2018年8月1日星期三10:03:52

今天在shell中的“日期”命令。

如果给定日期晚于今天的7天,则回显为真

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

对于标准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/')

其余都一样

如果使用其他任意格式,则必须使用regexp对其进行分解,然后转换为something date can recognize.

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

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

sed匹配一个正则表达式并将其替换