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
계산기( )를 실행하는 것입니다 . 소수점 이하 한 자리를 원한다고 지정하십시오. 24시간제(시간 범위는 0~23)의 경우 대신 사용하세요.%I
scale=1
%H
%I
이렇게 하면 10시간 미만의 시간 동안 패딩(앞에 0 또는 공백)이 제공되지 않으며 나누기가 아래쪽으로 잘립니다(11:35는 "11.6"이 아닌 "11.5"로 보고됨).