开始=08:20:12 结束=08:22:12
如何计算差异。
请帮忙解决一下..
答案1
假设两个时间都在同一天(而不是,例如 23:59:00 - 00:01:00),并且该时间不高于 23,则以下命令(在bash
或 POSIX-中sh
)将显示您可以在几秒钟内了解两者之间的差异:
$ start="08:20:12" end="08:22:12"
$ echo $(( $(date +"%s" -d "$end") - $(date +"%s" -d "$start") ))
120
另一种方法,不使用date
命令,它还会检查 the$end
是否大于,如果不大于,$start
则添加 24 小时的秒数:$end
# start="08:20:12" end="08:22:12"
# IFS=: read h m s <<< $start; START=$(( (3600 * ${h#0} ) + (60 * ${m#0}) + ${s#0} ))
# IFS=: read h m s <<< $end; END=$(( (3600 * ${h#0} ) + (60 * ${m#0}) + ${s#0} ))
# [[ $END -lt $START ]] && END=$(( $END + (24*60*60) ))
# echo $(( $END - $START ))
120
如果数字小于 10,此代码还会从小时/分钟/秒中删除前面的 0,将其转换为单个数字(假设所有三个都是两位数)。并编写一个将时间转换为秒的函数。
# function convert_to_seconds { IFS=: read h m s <<< $1; echo $(( (3600 * ${h#0} ) + (60 * ${m#0}) + ${s#0} )) ; }
# START=$(convert_to_seconds "23:59:12")
# END=$(convert_to_seconds "00:01:12")
# [[ $END -lt $START ]] && END=$(( $END + (24*60*60) ))
# echo $(( $END - $START ))
120