如何在shell脚本中查找存储在两个字符串中的时间差异



我正在编写一个shell脚本,其中我有一个变量t_1 = "10:51:45",我想找到这个时间(假设这总是在过去)和当前时间之间的时差

i tried doing this

curr_time=`date | cut -d " " -f 5`
A1=`date +%H:%M:%S -d $t_1`
C1=`date +%H:%M:%S -d $curr_time`
echo "$((C1 - A1))"

get below error (curr_time = 23:10:03)
表达式语法错误(错误标记为":10:03 - 10:51:45")

t_1="10:51:45"
curr_time=`date | cut -d " " -f 5`
A1=`date +%s -d $t_1`
C1=`date +%s -d $curr_time`
echo "${C1} : ${A1}"
echo "$((C1 - A1))"

需要将日期转换为epoch格式。这可以在GNU awk中完成:

awk -v etim="2021 02 08 23 27 00" '{ print strftime("%c",mktime(etim)-strftime("%s"),1) }' <<< /dev/null

使用awk的mktime和strftime函数将日期转换为epoch格式,并输出两者之间的差值,例如"2021/02/08 23:27:00";现在是locale格式。可以通过更改"%c">

来更改格式。

最新更新