コマンドdate +%R
を入力すると、私のシステムはこの10:42のような時間を表示しました。合計時間をとる必要があります。つまり、この642分です。合計時間を分単位で表示するためのコマンドまたはシェルスクリプトはありますか?
1日の合計分だけを取得するには、次のコマンドを使用します。
$ date "+%H*60+%M" | bc
例:
$ date +%R
09:30
$ date "+%H*60+%M" | bc
570
トリックは、date
が式を解釈および計算できるようにbc
出力をフォーマットすることです。
ただbash:
IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))
無効な8進数08
および09
に対してシェルがエラーをスローしないように、両方の変数を強制的にbase-10として処理します
date +%R | awk -F ":" '{print ($1 * 60) + $2}'
または
echo $((($(date +%l) * 60 ) + $(date +%M)))
date +%l
は時間を取得し、60を掛けて分を追加しますdate +%M
date
およびbash
の使用:
eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
例
$ date
Fr 10. Jul 08:45:05 CEST 2015
$ eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
525
date
とz-Shell(zsh)を使用します。
IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
例
% date
Fr 10. Jul 08:40:53 CEST 2015
% IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
520
IFSを使用する必要はありません。次の方法で実行できます。
date=$(date +'%l:%M')
read H M <<< ${date//[-: ]/ }
echo "Total minutes: $(($H * 60 + $M))"
出力は次のとおりです。
Total minutes: 593