시작=08:20:12 끝=08:22:12
차이를 계산하는 방법.
해결 도와주세요..
답변1
두 시간이 모두 같은 날(예: 23:59:00 - 00:01:00 대신)이고 시간이 23보다 크지 않다고 가정하면 다음 명령(in bash
또는 POSIX- sh
)을 사용하면 몇 시간이 표시되는지 확인할 수 있습니다. 몇 초 만에 둘 사이의 차이점을 알아볼 수 있습니다.
$ start="08:20:12" end="08:22:12"
$ echo $(( $(date +"%s" -d "$end") - $(date +"%s" -d "$start") ))
120
또 다른 방법은 date
명령을 사용하지 않고 $end
이 값이 다음보다 큰지 확인하고, 그렇지 않은 경우 $start
24시간의 초를 추가하는 것입니다.$end
# start="08:20:12" end="08:22:12"
# IFS=: read h m s <<< $start; START=$(( (3600 * ${h#0} ) + (60 * ${m#0}) + ${s#0} ))
# IFS=: read h m s <<< $end; END=$(( (3600 * ${h#0} ) + (60 * ${m#0}) + ${s#0} ))
# [[ $END -lt $START ]] && END=$(( $END + (24*60*60) ))
# echo $(( $END - $START ))
120
또한 이 코드는 숫자가 10보다 작은 경우 시/분/초에서 앞에 오는 0을 제거하여 단일 숫자로 변환합니다(세 숫자가 모두 두 자리라고 가정). 그리고 시간을 초로 변환하는 함수를 작성하세요.
# function convert_to_seconds { IFS=: read h m s <<< $1; echo $(( (3600 * ${h#0} ) + (60 * ${m#0}) + ${s#0} )) ; }
# START=$(convert_to_seconds "23:59:12")
# END=$(convert_to_seconds "00:01:12")
# [[ $END -lt $START ]] && END=$(( $END + (24*60*60) ))
# echo $(( $END - $START ))
120