시스템에 알려진 시간대를 어떻게 나열할 수 있습니까?

시스템에 알려진 시간대를 어떻게 나열할 수 있습니까?

내 시스템의 zoneinfo 데이터베이스에 모든 시간대 목록을 갖고 싶습니다(참고: 시스템은 debian strecth linux입니다).

내 현재 솔루션은 다음과 같습니다. 아래의 모든 경로를 나열하십시오 /usr/share/zoneinfo/posix. 일반 파일이거나 심볼릭 링크입니다.

cd /usr/share/zoneinfo/posix && find * -type f -or -type l | sort

그러나 알려진 모든 시간대가 이 디렉토리 아래의 경로에 매핑되는지는 확실하지 않습니다.

질문

시스템의 현재 zoneinfo 데이터베이스에 있는 전체 시간대 목록을 제공할 수 있는 명령이 있습니까?

답변1

Debian 9에서 명령을 실행하면 여기에 나열된 모든 시간대가 표시됩니다.https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

또한 명령과 동일한 목록을 systemd출력합니다 .timedatectl list-timezones

내가 아는 한, 여기에 포함된 데이터는 tzdataIANA에서 직접 제공합니다.

This package contains data required for the implementation of
 standard local time for many representative locations around the
 globe. It is updated periodically to reflect changes made by
 political bodies to time zone boundaries, UTC offsets, and
 daylight-saving rules.

따라서 tzdata패키지를 최신 상태로 유지하십시오.

답변2

사용하지 않는 시스템에서 목록을 검색하려는 경우 구현에서 파생된 스크립트 systemd는 다음과 같습니다 .awktimedatectl list-timezones

awk '/^Z/ { print $2 }; /^L/ { print $3 }' /usr/share/zoneinfo/tzdata.zi

출력을 에 파이프하면 sort와 거의 동일한 결과를 얻을 수 있습니다 timedatectl list-timezones.

관련 정보