HP-UX
취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 

script상에서 date값 계산하기

 
양홍석
신규 회원

script상에서 date값 계산하기

안녕하세요.

script상에서 date로 읽어온값에 수정을 했으면 하는데,

쉽지가 않네요.

흠..예를 들어 date값이 아래와 같을때

Thu Aug 26 13:17:57 KST 2004

위 시간에서 30초를 더하거나 뺀 시간을 계산하고 싶은데..

일일 단위 수정은 Timezone을 변경하면 가능하지만 초단위 수정을

script상에서 구현하려다 보니 해결책이 안 떠오릅니다.



많은 도움 부탁드립니다.
1 응답 1
Joseph
초등학생

script상에서 date값 계산하기

30초를 더하고 뺀 시간을 구하는 문제는 어디까지 보여주는가에 따라서script가 길든지 짧든지 하는 것 같습니다.

년도까지 보여주어야 한다면 코드가 더 길어지겠죠...

예를 들어 현재 1999년12월31일23시59분40초 일경우 30초를 더하면

년도이하 모두가 바꿔야 하지요...(윤달까지 고려하면^^;;)



예전에 전일을 구하는 script입니다..

아래 옵션을 이용해서 한번 해 보시기 바랍니다...

#date +FORMAT

FORMAT관련

%Y : 예) 2004 을 보여줌.

%d : 1월-12월

%e : 1일-31일

%H : 0시-23시

%M : 0분-59분

%S : 0초-59초



Good luck~~



* 전일 구하는 스크립트 *

#! /usr/bin/sh



integer YYYY MM DD BDAY FLAG=0



YYYY=$(date +%Y)

MM=$(date +%0m)

DD=$(date +%0d)



(( BDAY = $DD - 1 ))



function yy {

if (($YYYY % 4 == 0 )) && (( $YYYY % 100 != 0)) || (($YYYY % 400 == 0 ))

then

FLAG=1

else

FLAG=0

fi

}



function mmdd {

case $MM in

1|3|5|7|8|10|12)

DAYS=31

;;

4|6|9|11)

DAYS=30

;;

2)

yy

if (( $FLAG == 1 ))

then

DAYS=29 #29(윤달)

else

DAYS=28 #28일

fi

esac

}



if (( $MM == 1 )) && (( $DD == 1 ))

then

(( YY = YY - 1 ))

MM=12

mmdd

BDAY=$DAYS

elif (( $DD == 1 ))

then

(( MM = MM - 1 ))

mmdd

BDAY=$DAYS

fi



if (( $MM < 10 ))

then

dal=$MM

dal=0$dal

else

dal=$MM

fi



if (($BDAY < 10))

then

ddd=$BDAY

ddd=0$ddd

else

ddd=$BDAY

fi





cdate=$YYYY$dal$ddd



**************************************