운영 체제마다 DST(일광 절약 시간)를 다르게 처리하는 것 같습니다. 저는 Cisco IOS 접근 방식을 정말 좋아합니다. 매우 간단하고 DST가 시작되고 끝나는 날짜와 시간을 변경할 수 있습니다. 예를 들어:
clock summer-time EDT recurring 2 Sun Mar 2:00 1 Sun Nov 2:00 60
..3월 둘째 일요일 2시에 시계를 60분 앞으로 설정하고, 11월 첫째 일요일 2시에 시계를 60분 뒤로 설정합니다. Linux는 일광 절약 시간을 어떻게 처리합니까? 디렉토리 tzdata
에 설치되는 시간대 데이터 파일이 포함된 패키지 가 있다는 것을 알고 있습니다 . /usr/share/zoneinfo/
이러한 파일은 어떤 유틸리티로 어떻게 사용됩니까? 파일에서 UTC(2) 및 시간대 이름(EET 및 EEST)의 변경 사항을 볼 수 있습니다.
T60:~# strings /usr/share/zoneinfo/posix/Europe/Helsinki
TZif2
HMT
EEST
TZif2
EEST
EET-2EEST,M3.5.0/3,M10.5.0/4
T60:~#
그리고 M3
아마 3개월이나 M10
10개월쯤 됐겠죠? 또한 오프셋을 어딘가에 지정해야 합니다. 예를 들어 iOS에서는 DST가 발생하면 시계가 60분 대신 90분 또는 120분씩 이동하도록 구성할 수 있습니다.
답변1
당신이 보면TZ 데이터베이스에 관한 Wikipedia 페이지:
발췌
파일 형식
tz 데이터베이스는 사람이 읽을 수 있는 형식으로 규칙 및 영역 변환을 나열하는 텍스트 파일 세트로 게시됩니다. 사용되면 이러한 텍스트 파일은 플랫폼 독립적인 바이너리 세트(시간대마다 하나씩)로 컴파일됩니다. 참조 소스 코드에는 zic(Zone Information Compiler)이라는 컴파일러와 이러한 파일을 읽고 localtime() 및 mktime()과 같은 표준 API에서 사용하는 코드가 포함되어 있습니다.
추가 검색으로 stackoverflow에서 다음과 같은 제목의 Q&A가 나타났습니다.시간대 데이터베이스 파일 형식 문제, 파일 형식에 대한 추가 정보가 포함되어 있습니다.