Bash 如何将UNIX HH:MM:SS设置为日期时间以计算时差

Bash 如何将UNIX HH:MM:SS设置为日期时间以计算时差,bash,unix,time,Bash,Unix,Time,我想通过传入一个字符串HH:MM值来设置时间并计算此时间与当前系统时间之间的差来计算时间差 我知道date--set=“2013-07-10”+%T(或类似的内容)。但我无法确定如何将时间部分设置为传入的字符串HH:MM值,并将数据保留为当前日期。然后,为了计算,我尝试使用下面的公式,将其更改为时间戳值;我从另一个用户那里发现: mydate=?? date1=$($mydate +"%s") #my set date/time here date2=$(date +"%s") diff=$(

我想通过传入一个字符串
HH:MM
值来设置时间并计算此时间与当前系统时间之间的差来计算时间差

我知道
date--set=“2013-07-10”+%T
(或类似的内容)。但我无法确定如何将时间部分设置为传入的字符串
HH:MM
值,并将数据保留为当前日期。然后,为了计算,我尝试使用下面的公式,将其更改为时间戳值;我从另一个用户那里发现:

mydate=??
date1=$($mydate +"%s")  #my set date/time here
date2=$(date +"%s")
diff=$(($date2-$date1))
echo "$(($diff / 60)) minutes and $(($diff % 60))"

您可以使用
date-d hh:mm
创建具有指定时间的新日期

例如:

$ date -d 11:15
Wed Jul 10 11:15:00 BST 2013
使用此选项,您可以编写以下脚本:

time=11:15

now=$(date +%s)
other=$(date -d $time +%s)
diff=$((other-now))
echo "$((diff / 60)) minutes and $((diff % 60)) seconds"

参考此链接非常好,感谢您的快速响应。如果我必须做一个区分,在过去的时间是超过午夜,第1天。。时间是02:00,这会是直接的吗?光秃秃的时间被解释为属于今天。您需要设置时间来区分明天的时间和今天的时间:
time=“明天11:15”