2013-04-26 5 views
-2

HP-UX에서 쉘 스크립트 (KSH 쉘)에서 변수에 저장된 날짜에 승 가능한 GNU date,이 없기 때문에/B의 차이를 찾는 방법 즉 date 명령의 -d-s 옵션을 사용할 수 없습니다. 주어진 두 날짜의 차이를 일 (Solaris 또는 bash 쉘에서와 같이)에서 어떻게 찾을 수 있습니까?

+0

날짜는 어떤 형식입니까? –

+0

형식은 dd/mm/yyyy – vini

+0

이고 수십/월/시간/마이크로 초의 차이를 원하십니까? ...? 당신은 당신이하려고하는 것에 대해 좀 더 구체적 일 필요가 있습니다. –

답변

0

Google을 통해 실제로 발견 할 수있는 해결책이 많이 있지만 here은 내가 방금 넘어지면서 간결하게하기위한 것입니다. 두 날짜에 모두 ansi_dn 함수를 사용하고 차이를 계산합니다.

diff_dates.sh :

#!/bin/ksh 

. ./ansi_dn.sh 

date_to="$1" 
date_from="$2" 

echo $((
     $(ansi_dn \ 
     $(echo "${date_to}" | cut -d/ -f3) \ 
     $(echo "${date_to}" | cut -d/ -f2) \ 
     $(echo "${date_to}" | cut -d/ -f1) \ 
    ) 
    - $(ansi_dn \ 
     $(echo "${date_from}" | cut -d/ -f3) \ 
     $(echo "${date_from}" | cut -d/ -f2) \ 
     $(echo "${date_from}" | cut -d/ -f1) \ 
    ) 
)) 

예 (당신은 년, 월 이미 cut 악몽이 분명히 필요하지 않은 별도의 변수에 두 날짜의 일이있는 경우.) :

$ ./diff_dates.sh 08/05/2013 01/01/1939 
27156 

GNU date의 정확성을 확인해 보겠습니다.

$ echo $((($(date -d 2013-05-08 +%s) - $(date -d 1939-01-01 +%s) + 43200)/86400)) 
27156 
+0

하지만 위의 코드에서 ansi_dn.sh 스크립트의 내용은 무엇입니까 – vini

+0

@KVR_GROUPS :이 문장의 첫 문장에서 링크 된 함수는 http://unix.stackexchange.com/a/42415/36514입니다. –

+0

설명해 주시겠습니까? – vini