23:43から02:10までに何時間があるかを知らせるbashスクリプトをどのように書くことができますか?

23:43から02:10までに何時間があるかを知らせるbashスクリプトをどのように書くことができますか?

Bashで時間と分を計算する方法は?たとえば、2つのタイムスタンプを使用して、その間に何時間があるかを示すスクリプトを作成したいとします。どうすればいいですか?

$ timediff 23:43 02:10
Time difference is: xxx hours.

例のように、2番目のタイムスタンプが1日後の場合はどうなりますか?

ベストアンサー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

違いを見つけるには、少数の時間が必要ない場合はシェル算術を使用し、それ以外の場合はパイプを使用します。bc

$ diff=$(( (e2 - e1)/3600 ))
$ echo $diff
2
$ diff=$( echo "scale=2; ($e2-$e1)/3600" | bc)
$ echo $diff
2.46

おすすめ記事