如何在 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