1992.5.13
SUBJECT: ROK timezone의 KDT,KST 에 관하여
MEANING OF THIS MEMO:
CONTENTS:
0. KDT,KST의 의미
1. /usr/share/lib/zoneinfo/asia file
2. zic의 사용
3. Daylight time setting을 제거하는 방법
4. 참고자료
DESCRIPTION :
0. KDT와 KST의 의미
* date command를 사용할 때 display되는 line의 끝에 time zone의 약어가 표시된다.
* time zone ROK의 약어는 일반적으로 KST를 사용한다.
이는 Korean Standard Time 정도의 의미일 것이다.
그런데 간혹 KDT라는 약자가 display되는 경우가 있다.
이는 Korea Daylight Time의 의미로 daylight saving time
즉 summer time을 사용할 때 표시되는 약어이다.
* time zone 설정에 관련된 default 값들은 /usr/share/lib/zoneinfo/asia 에 있고
혹시라도 time zone의 변경시에는 이 file의 값들을 변경하여 zic을 사용하면 된다.
* 한 때 summer time을 실시 했던 관계로
aisa file의 ROK zone에는 default로 daylight time이 setting되어 있으며,
SunOS install의 time zone setting시에도 이 daylight 값이 setting된다고
추정된다.
이러한 이유로 date command 사용시 KST와 KDT가 혼용되는 경우가 발생하게 된다.
* 현재 daylight time 사용이 불필요함에도 SunOS에서 default로 setting되어
5월 2째주 일요일 02:00부터 10월 2째주 일요일 02:00시 까지를
daylight saving (summer time화)하고 있다.
이 기간 중에 date command 를 수행하면 KDT가 display되는 것이다.
* 따라서 time zone 사용에서
daylight saving의 영향을 제거하는 것이 원칙이 될 것이다.
즉 KDT가 display되는 경우가 없도록 하여야 한다.
특히 date를 check하여 이를 기본으로 어떤 작업을 수행하는 site의 경우라면
daylight time이 수행되는 것을 막아주는 작업을 해 주어야 한다.
이는 2.에서 설명될 것이다.
1. /usr/share/lib/zoneinfo/asia 중에서 time zone ROK 의 display format
* /usr/share/lib/zoneinfo/asia file은 각 time zone이 사용할 default 정보가 있음.
* 아래 설명되는 세 가지 format들은 그 순서에 상관 없이 설정될 수 있다.
* Rule line format :
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule ROK 1987 max - May Sun<=14 2:00 1:00 D
Rule ROK 1987 max - Oct Sun<=14 3:00 0 S
- 이는 ROK라는 time zone이 87년 이후로 매년 5월 2째주 일요일 02:00부터
10월 2째주 일요일 02:00시 까지를
daylight saving (summer time화)한다는 의미.
- LETTER field는
time zone의 약자(abbreviation) 중에서 변수부분에 설정될 값을 설정하는 곳.
* Zone line format :
# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
Zone ROK 9:00 ROK K%sT
- NAME field는 time zone의 이름을 설정하는데 사용되며,
또한 여기에 설정된 이름은 zone에 대한 time conversion 정보를
만들때 사용된다.
- GMTOFF field는 zone의 standard time을 얻기 위해
GMT에 더하거나 뺄 시간을 설정한다.
- RULES/SAVE field는
time zone 에 적용되는 Rule 의 NAME을 설정하거나
local standard time 에 더할 시간을 설정하기도 한다.
- FORMAT field에선
앞의 Lule line format의 LETTER field에서 설정된 변수부분의 값을
%s 에 대치한다. 따라서 위의 예에 따른다면
date command 사용시 KST or KDT가 display될 것이다.
* Link line format :
# Link LINK-FORM LINK-TO
Link ROK localtime
- LINK-FORM field에선
Zone line의 NAME field에 설정된 값이 기록된다.
- LINK-TO field에선
zone 에 대한 alternate name으로서 사용될 이름을 기록한다.
위의 예에서는 time zone인 ROK를 local time으로 사용한다는 의미이다.
2. zic
* time zone compiler
* zic은 command line서 주어진 file로 부터 text를 읽어들여 여기서 명시된
time conversion information file을 만든다.
즉 1.에서 설명한 세 가지 line format으로 input을 받아들여 그 중 NAME field에
설정된 이름으로 file을 만든다.
* 만드는 곳은 default로 /usr/share/lib/zoneinfo이다.
* filename이 '-'라면 standard input이 읽혀진다.
* comment out 된 부분은 해석하지 않는다.
3. Daylight time setting을 제거하는 방법
* 이 방법은 여러가지가 있을 수 있다. 편하다고 생각되는 방법 택하면 될 것.
* 방법 1 :
- # cat > k
Zone Korea 9:00 - KST
^D
- # zic k ( 이는 /usr/share/lib/zoneinfo 밑에
Korea라는 이름의 file을 만든다.)
- # cd /usr/share/lib/zoneinfo
- # rm localtime ( local time이 기존의 time zone으로
hard link된 것을 끊는 것이다.)
- # ln Korea localtime
- # tzsetup ( 이는 SunOS 4.0 이전 version에서 사용한다.
SunOS 4.0 이전에는 gettimeofday()라는 system call을
사용하여 kernel로 부터 time zone information을 얻기 때문에
tzsetup을 사용한다 )
- # zdump Korea ( 이는 Korea라는 zonename의 current time을 보여준다.
특별한 용도가 있는 것 같지 않음. 사용치 않아도 무방 )
- example:
sparc# date
1992년05월13일(수) 17시19분40초 KST
sparc# date 8809090900
1988년09월09일(금) 09시00분00초 KDT
sparc# cat > /tmp/k
Zone Korea 9:00 - KST
sparc# zic /tmp/k
sparc# ls -li localtime ROK Korea
4726 -rw-r--r-- 1 root 55 Sep 9 09:01 Korea
4728 -rw-r--r-- 2 root 76 May 13 1992 ROK
4728 -rw-r--r-- 2 root 76 May 13 1992 localtime
sparc# rm localtime
sparc# ln Korea localtime
sparc# ls -li localtime ROK Korea
4726 -rw-r--r-- 2 root 55 Sep 9 08:01 Korea
4728 -rw-r--r-- 1 root 76 May 13 1992 ROK
4726 -rw-r--r-- 2 root 55 Sep 9 08:01 localtime
sparc# date
1988년09월09일(금) 08시02분26초 KST
sparc# zdump Korea
Korea Fri Sep 9 08:02:46 1988 KST
* 방법 2 :
- # cd /usr/share/lib/zoneinfo
- 1.에서 예로 든 asia file의 세 가지 line format의 값대로 aisa file을 edit한다.
다만 Rule line format 중 daylight line을 comment out해 주면 된다.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
#Rule ROK 1987 max - May Sun<=14 2:00 1:00 D
Rule ROK 1987 max - Oct Sun<=14 3:00 0 S
- # rm localtime ( 기존 사용하던 time zone name이 ROK가 아닌 경우만 해당됨)
- # grep ROK asia | zic -
- example:
(방법 1 의 example에서 계속 작업한 것임.)
sparc# cd /usr/share/lib/zoneinfo
sparc# grep ROK asia
Rule ROK 1987 1988 - May Sun<=14 2:00 1:00 D
Rule ROK 1989 max - Oct Sun<=14 3:00 0 S
Zone ROK 9:00 ROK K%sT
Link ROK localtime
sparc# vi asia ( daylight 관련 Rule line을 comment out한다)
sparc# grep ROK asia
#Rule ROK 1987 1988 - May Sun<=14 2:00 1:00 D
Rule ROK 1989 max - Oct Sun<=14 3:00 0 S
Zone ROK 9:00 ROK K%sT
Link ROK localtime
sparc# grep ROK asia | zic - ( time zone name이 ROK로 생성됨 )
sparc# rm localtime ( time zone name이 Korea로 사용되고 있기 때문)
/usr/share/lib/zoneinfo
sparc# ln ROK localtime
sparc# date
1988년09월09일(금) 08시14분10초 KST
sparc# zdump ROK
ROK Fri Sep 9 08:47:03 1988 KST
4. 참고자료
zic(8) tzsetup(8) zdump(8)
Revision History
Updated on May 13 ,1992