11:30が11.5で印刷されるように日付/時刻出力形式をどのように指定しますか?
答え1
これは一つの方法です。
$ date
Fri Mar 1 19:30:36 STD 2019
$ date '+%H %M' | awk '{ printf "%d.%d\n",$1,$2/60*10 }'
19.5
$
より短いバージョン
$ date '+%H %M'|awk '{$0=$1"."int($2/6)}1'
19.5
$
答え2
簡単な解決策は、12時間制を使用しますが、必須の「AM」/「PM」インジケータを含まないことです。
date +'scale=1; %I + %M/60' | bc
もちろん、変数から出力をキャプチャできます。
dec_time=$(date +'scale=1; %I + %M/60' | bc)
これは、単に時間()に時間の分数(分を60で割った値)を加えた式を使用して
bc
計算機()を実行することです。小数点以下の1桁が必要であることを指定してください。 24時間制(時間範囲は0~23)の場合、代わりに使用してください。%I
scale=1
%H
%I
これにより、10時間未満の時間にパディング(前にゼロまたはスペース)が提供されず、除算が下に切り捨てられます(11:35は「11.6」ではなく「11.5」と報告されます)。