web-dev-qa-db-ja.com

時間から合計分をとるにはどうすればよいですか?

コマンドdate +%Rを入力すると、私のシステムはこの10:42のような時間を表示しました。合計時間をとる必要があります。つまり、この642分です。合計時間を分単位で表示するためのコマンドまたはシェルスクリプトはありますか?

8

1日の合計分だけを取得するには、次のコマンドを使用します。

$ date "+%H*60+%M" | bc

例:

$ date +%R
09:30
$ date "+%H*60+%M" | bc
570

トリックは、dateが式を解釈および計算できるようにbc出力をフォーマットすることです。

11
Sylvain Pineau

ただbash:

IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))

無効な8進数08および09に対してシェルがエラーをスローしないように、両方の変数を強制的にbase-10として処理します

5
glenn jackman
date +%R | awk -F ":" '{print ($1 * 60) + $2}'

または

 echo $((($(date +%l) * 60 ) + $(date +%M)))

date +%lは時間を取得し、60を掛けて分を追加しますdate +%M

3
7171u

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
2
A.B.

IFSを使用する必要はありません。次の方法で実行できます。

date=$(date +'%l:%M')
read H M <<< ${date//[-: ]/ }
echo  "Total minutes: $(($H * 60 + $M))"

出力は次のとおりです。

Total minutes: 593
1
Maythux