秒を日/時/分/秒で表示しますか?

秒を日/時/分/秒で表示しますか?

Bashで秒を人間が読める時間に簡単にフォーマットできますか?

日付形式ではなく、日/時間/分などで形式を指定したいと思います。

ベストアンサー1

次のように使用できます。

function displaytime {
  local T=$1
  local D=$((T/60/60/24))
  local H=$((T/60/60%24))
  local M=$((T/60%60))
  local S=$((T%60))
  (( $D > 0 )) && printf '%d days ' $D
  (( $H > 0 )) && printf '%d hours ' $H
  (( $M > 0 )) && printf '%d minutes ' $M
  (( $D > 0 || $H > 0 || $M > 0 )) && printf 'and '
  printf '%d seconds\n' $S
}

例:

$ displaytime 11617
3 hours 13 minutes and 37 seconds
$ displaytime 42
42 seconds
$ displaytime 666
11 minutes and 6 seconds

おすすめ記事