HP-UX
1753975 회원
7237 온라인
108811 솔루션
새 메시지

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



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