Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 将给定日期与今天进行比较';贝壳里的红枣_Shell_Date_Compare - Fatal编程技术网

Shell 将给定日期与今天进行比较';贝壳里的红枣

Shell 将给定日期与今天进行比较';贝壳里的红枣,shell,date,compare,Shell,Date,Compare,我想比较一个给定的日期 日期1=2018年8月1日星期三10:03:52美国东部夏令时 到 今天在shell中使用“date”命令 如果给定日期比今天的日期早7天,则在GNU date中回显true您可以使用date-d“$date1”+%s解析日期字符串,并将其转换为UTC 1970-01-01 00:00:00以来的秒数 您可以将其与日期+%s的结果进行比较,这将以相同的格式为您提供当前日期。对于标准日期格式: date1="Tue Sep 25 11:32:09 EDT 2018" no

我想比较一个给定的日期

日期1=2018年8月1日星期三10:03:52美国东部夏令时

今天在shell中使用“date”命令


如果给定日期比今天的日期早7天,则在GNU date中回显true

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


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

对于标准
日期
格式:

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将其分解并转换为

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

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


sed
匹配一个regexp并替换它

更新了我的问题,如果您可以更新您的答案,请。