날짜 차이 계산 [중복]

날짜 차이 계산 [중복]

다음 두 시간의 시차를 계산하고 싶습니다.

Value1=2016-10-13 14:19:23
Value2=2016-10-13 18:19:23 

시간/분 형식으로 차이를 얻고 싶습니다. 빠른 해결책이 있나요?

답변1

GNU 구현을 가정하여 명령 대체를 사용 date하고 산술 확장을 사용하여 시간 차이를 얻을 수 있습니다.

% Value1='2016-10-13 14:19:23'

% Value2='2016-10-13 18:19:23' 

% echo "$(($(date -d "$Value2" '+%s') - $(date -d "$Value1" '+%s')))"
14400

결과는 초 단위입니다.

답변2

시간/분/초 단위로 답변:

date -u -d @$(($(date -d "$Value2" '+%s') - $(date -d "$Value1" '+%s'))) '+%T'

답변을 얻는 데는 몇 시간/분 밖에 걸리지 않습니다(원래 요청한 대로).

date -u -d @$(($(date -d "$Value2" '+%s') - $(date -d "$Value1" '+%s'))) '+%H:%M'

위의 내용은 사용자가 시간과 분의 차이에만 관심이 있고 날짜의 차이는 무시한다고 가정합니다. 대답은 전적으로 원하는 것이 무엇인지에 달려 있습니다.

1일 이상의 차이를 처리합니다.

Value1='2016-10-13 14:19:23'
Value2='2016-10-18 10:34:58'

D1=$(date -d "$Value1" '+%s'); D2=$(date -d "$Value2" '+%s')
echo "$(((D2-D1)/86400)):$(date -u -d@$((D2-D1)) +%H:%M)"

생산하다:

4:20:15

다양한 셸의 경우 Bash에서 다음과 같은 작업을 수행할 수도 있습니다.

declare -i Delta=D2-D1
declare -i Days=Delta/86400
echo "$Days:$(date -u -d@$Delta +%H:%M)"

답변3

$ datediff -f "%H hours and %M minutes" "2016-10-13 14:19:23" "2016-10-13 18:19:23"
4 hours and 0 minutes

datediff는 dateutils 패키지에서 제공됩니다.http://www.fresse.org/dateutils/

이 명령과 달리 datedateutils는 기본적으로 GMT를 사용하고 로케일을 무시합니다. 이로 인해 일광 절약 시간 조정에 1시간의 차이가 생길 수 있습니다.

비교하다:

$ datediff  -f "%H:%M" "2016-10-29 14:00:00" "2016-10-30 14:00:00"
24:0

그리고

$ datediff --from-zone=Europe/Berlin  -f "%H:%M" "2016-10-29 14:00:00" "2016-10-30 14:00:00"
25:0

관련 정보