给定两次,比如2021-06-25T04:28Z和2021-06-18T19:36:31Z其中,第一时间是指2021年6月26日凌晨4:04(+28秒(,第二时间是指2020年6月18日下午7:36(+31秒(。我想写一个bash脚本来比较这两个时间,并可以告诉我这两个事件之间的间隔是否小于20分钟。有没有函数可以做到这一点,或者我必须尝试解析它,然后用这种方式进行比较。因此对于上述输入;时间彼此不在20分钟内";
谢谢!
date
命令可以解析和转换日期/时间数据。
$: a=$( date --date="2021-06-18T19:36:31Z" +%s )
$: b=$( date --date="2021-06-25T04:04:28Z" +%s )
CCD_ 2格式从1/1/70开始以秒为单位输出结果。
$: echo $a $b
1624044991 1624593868
所以你可以用它做简单的整数运算。
$: secs=$(( b - a ))
$: secs=${secs#-} # get the absolute value
$: if (( secs < ( 20 * 60 ) )); then echo "within 20m"; else echo ">20m"; fi
>20m
perl是一种解析时间戳的可移植方法(MacOS没有附带GNU日期,尽管它很容易安装(
t1=2021-06-25T04:04:28Z
t2=2021-06-18T19:36:31Z
diff=$(
perl -MTime::Piece -E '
$fmt = "%Y-%m-%dT%H:%M:%SZ";
$t1 = Time::Piece->strptime($ARGV[0], $fmt)->epoch;
$t2 = Time::Piece->strptime($ARGV[1], $fmt)->epoch;
say abs($t1 - $t2);
' "$t1" "$t2"
)
mins=20
if ((diff <= 60 * mins)); then
echo "within $mins mins: $t1 and $t2"
else
echo "greater than $mins mins: $t1 and $t2"
fi