![我怎样才能编写一个 bash 脚本来告诉我从 23:43 到 02:10 有多少个小时?](https://linux22.com/image/74566/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%20bash%20%E8%84%9A%E6%9C%AC%E6%9D%A5%E5%91%8A%E8%AF%89%E6%88%91%E4%BB%8E%2023%3A43%20%E5%88%B0%2002%3A10%20%E6%9C%89%E5%A4%9A%E5%B0%91%E4%B8%AA%E5%B0%8F%E6%97%B6%EF%BC%9F.png)
如何在 bash 中计算小时和分钟?例如,假设我想编写一个脚本,该脚本需要两个时间戳并告诉我它们之间有多少小时,我该怎么做?
$ timediff 23:43 02:10
Time difference is: xxx hours.
如果第二个时间戳晚了一天,我该如何处理,如示例中所示?
答案1
$ t1="23:42"
$ t2="02:10"
$ e1=$( date -d "$t1" +%s )
$ e2=$( date -d "$t2" +%s )
$ if (( e1 > e2 )); then e2=$( date -d "$t2 tomorrow" +%s ); fi
$ date -d@$e1
Tue Oct 6 23:42:00 EDT 2015
$ date -d@$e2
Wed Oct 7 02:10:00 EDT 2015
要找到差异,如果不需要小数小时,请使用 shell 算术,否则通过管道bc
$ diff=$(( (e2 - e1)/3600 ))
$ echo $diff
2
$ diff=$( echo "scale=2; ($e2-$e1)/3600" | bc)
$ echo $diff
2.46