[원문]코쟁이 http://coders.tistory.com/search/timezone
Timezone on Linux
리눅스의 Timezone 및 DST는 TZ라는 환경변수에 의해 결정됩니다.
1. TZ 환경변수가 없을경우
2. TZ 환경변수가 있으나 빈값(Null)이거나 잘못된 형태로 기록되어 있을경우
3. TZ 환경변수가 있고 정확한 포맷으로 기록되어 있을경우
위의 TZ환경변수를 이용하면 프로세스별로 독립적인 Timezone을 가지고 프로그래밍 할 수 있습니다. 참고로 windog에서는 안됩니다. 구현이 덜 된듯하더군요.
1. TZ 환경변수가 없을경우
TZ 환경변수가 없을경우는 시스템 타임존 디렉토리에 존재하는 특정파일을 읽어와 타임존과 DST정보를 설정하게 됩니다. 즉 /etc/localtime을 읽습니다. 이파일은 tzfile(5)형태로 지역의 타임존과 연도별 DST정보를 포함하고 있습니다.
2. TZ 환경변수가 있으나 빈값(Null)이거나 잘못된 형태로 기록되어 있을경우
이런경우는 UTC를 사용하게 됩니다. 흔히들 GMT라고 불리는데 GMT는 타임존의 이름이므로 정확한 표현은 UTC로 하세요.
3. TZ 환경변수가 있고 정확한 포맷으로 기록되어 있을경우
3.1. TZ 환경변수가 standard offset값만을 포함한 경우
3.2. TZ 환경변수가 dst 정보까지 포함한 경우
3.3. TZ 환경변수에 tzfile의 path가 포함된 경우
우리나라가 여기에 해당됩니다. 즉 "타임존이 UTC에 비해 얼마 떨어졌는가"만을 표현하는 경우죠. 따라서 DST는 사용하고 있지 않은 지역이 됩니다.
ex) Seoul : TZ=KST-9
TZ=STDhh[:mm]
STD: 키워드입니다. KST, GMT등이죠. 3글자 이상 알파벳만 허용됩니다. 단지 표시용 이므로 크게 상관 안하셔도 됩니다.
hh: 시간입니다.
mm: 분입니다. 옵션이므로 없어도 됩니다.
ex) Seoul : TZ=KST-9
3.2. TZ 환경변수가 dst 정보까지 포함한 경우
DST를 사용하는 지역이 여기에 해당됩니다. 타임존 정보뿐만 아니라 DST의 시작 일/시, 종료 일/시까지 포함하게 됩니다. 좀 복잡하니깐 차근차근 읽어주세요.
ex) (GMT-05:00) Eastern Time (US & Canada) : TZ=STD5DST4:0,M4.1.0/2:0:0,M10.5.0/2:0:0
DST 시작/종료 일시 표현방식 : Mmonth.week.weekday/hour:min:sec
TZ=STDhh[:mm]DSTbias_hh:bias_mm,{DST 시작 일시},{DST 종료 일시}
STD,DST: 위와같이 키워드 입니다.
bias_hh, mm: DST시 변경될 시간, 분입니다.
month: 월, 1~12
week: 주, 1~5, 서수표현이며 몇번째 주를 나타냅니다.
weekday: 요일, 0-6, 0은 일요일, 6은 토요일 입니다.
ex) (GMT-05:00) Eastern Time (US & Canada) : TZ=STD5DST4:0,M4.1.0/2:0:0,M10.5.0/2:0:0
3.3. TZ 환경변수에 tzfile의 path가 포함된 경우
/etc/localtime 대신 다른 tzfile을 사용할경우에 사용됩니다.
ex) Seoul : TZ=:/usr/share/zoneinfo/ROK
TZ=:{TZFILEPATH}
ex) Seoul : TZ=:/usr/share/zoneinfo/ROK
위의 TZ환경변수를 이용하면 프로세스별로 독립적인 Timezone을 가지고 프로그래밍 할 수 있습니다. 참고로 windog에서는 안됩니다. 구현이 덜 된듯하더군요.
'공부 이야기 > 컴퓨터 몽땅' 카테고리의 다른 글
| Awk 사용법 (0) | 2008/08/06 |
|---|---|
| Virtual IP setup (0) | 2008/08/04 |
| Timezone on Linux (2) | 2008/07/21 |
| NTPClient (0) | 2008/07/20 |
| Lightbox JS (0) | 2008/06/18 |
| epoll 서버 샘플 프로그래밍 (0) | 2008/05/29 |


이올린에 북마크하기


