23:43부터 02:10까지 몇 시간이 있는지 알려주는 bash 스크립트를 어떻게 작성할 수 있나요?

23:43부터 02:10까지 몇 시간이 있는지 알려주는 bash 스크립트를 어떻게 작성할 수 있나요?

Bash에서 시간과 분을 계산하는 방법은 무엇입니까? 예를 들어, 두 개의 타임스탬프를 사용하여 그 사이에 몇 시간이 있는지 알려주는 스크립트를 작성하고 싶다고 가정해 보겠습니다. 어떻게 해야 합니까?

$ timediff 23:43 02:10
Time difference is: xxx hours.

예시와 같이 두 번째 타임스탬프가 하루 뒤인 경우 어떻게 처리하나요?

답변1

$ t1="23:42"
$ t2="02:10"
$ e1=$( date -d "$t1" +%s )
$ e2=$( date -d "$t2" +%s )
$ if (( e1 > e2 )); then e2=$( date -d "$t2 tomorrow" +%s ); fi
$ date -d@$e1
Tue Oct  6 23:42:00 EDT 2015
$ date -d@$e2
Wed Oct  7 02:10:00 EDT 2015

차이점을 찾으려면 소수 시간이 필요하지 않은 경우 쉘 산술을 사용하고, 그렇지 않으면 파이프를 사용하십시오.bc

$ diff=$(( (e2 - e1)/3600 ))
$ echo $diff
2
$ diff=$( echo "scale=2; ($e2-$e1)/3600" | bc)
$ echo $diff
2.46

관련 정보