日付出力分を時間の一部としてフォーマットする

日付出力分を時間の一部としてフォーマットする

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)の場合、代わりに使用してください。%Iscale=1%H%I

これにより、10時間未満の時間にパディング(前にゼロまたはスペース)が提供されず、除算が下に切り捨てられます(11:35は「11.6」ではなく「11.5」と報告されます)。

関連情報