시간이 몇 분이면 어떻게 되나요?


8

내가 명령을 입력하면 내 시스템은 10:42와 같은 시간을 표시했습니다 date +%R. 총 시간이 필요합니다. 이것은 642 분과 같은 의미입니다. 총 시간을 분 단위로 표시하는 명령 또는 쉘 스크립트가 있습니까?

답변:


11

하루의 총 시간 만 얻으려면 다음 명령을 사용합니다.

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

예:

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

요령은 공식을 해석하고 계산할 date수 있도록 출력 을 형식화하는 것 bc입니다.


2
를 사용하면 echo $(date +"%H*60+%M") | bczsh에서도 작동합니다.)
AB

@AB 언젠가는 다음으로 전환합니다zsh
Sylvain Pineau

1
date "+%H*60+%M" | bc잘 작동합니다. 아마 거의 모든 껍질에서.
디지털 외상

@DigitalTrauma : 간단합니다. 감사합니다. 이에 따라 답변을 업데이트했습니다.
Sylvain Pineau

5

그냥 bash :

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

두 변수를 강제하는 것은 잘못된 8 진수에 대한 오류를 던지는 쉘을 방지하기 위해 기본-10으로 처리하는 방법 0809


그렇습니다, echo $(( $(date "+%k * 60 + 10#%M") ))내가 말하고자하는 것
Digital Trauma

1
그래, 아무 문제 없어 어쩌면 내 대답은 조금 더 ... 교육
글렌 잭맨

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

또는

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

date +%l 시간을 얻고 60을 곱하고 분을 추가합니다. date +%M


2

사용 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

datez-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

1
@DineshDhananjayan 내 대답에 만족 했습니까? 그런 다음 공감대를주십시오 (∧). 문제를 해결할 수 있다면 답변을 표시하면 좋을 것입니다 (✓). askubuntu.com/help/someone-answers ;)
AB

1
나는 당신의 zsh 답변이 옳다고 생각하지 않습니다 : IFS=: set -- $(date +%T); echo $1반환 08:16:52-당신이 필요합니다IFS=:; set ...
glenn jackman

@glennjackman Ups 감사합니다. : \
AB

1

IFS를 사용할 필요가 없으며 다음과 같이 할 수 있습니다.

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

출력은 다음과 같습니다

Total minutes: 593

귀하의 답변을 수정했습니다. 오류 메시지는bash: 9 17*60+: syntax error in expression (error token is "17*60+")
AB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.