我怎样才能编写一个 bash 脚本来告诉我从 23:43 到 02:10 有多少个小时?

我怎样才能编写一个 bash 脚本来告诉我从 23:43 到 02:10 有多少个小时?

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

相关内容