저는 사용자가 세부 사항에 너무 많은 정보를 입력하지 않고도 특정 작업에 대해 실제 시간대와 다른 시간대를 선택할 수 있는 애플리케이션을 구축하고 있으며, 여러 시간대를 지원하는 것이 실제로 특정 틈새 비즈니스에 적합하다는 점을 확신할 수 있습니다.
IANA TZ 데이터베이스에 대해 알고 있지만 어떤 형식으로든 시간대 및 오프셋 정보가 포함된 현재 목록을 제공하고 데이터베이스 구문 분석에 드는 어려움을 덜어주는 배포판이 있는지 궁금합니다.
내가 아는 한, 시간대 데이터베이스는 현재 "지금" 유효하고 사용 가능한 정보를 찾고 있지만 완전한 기록 정보를 포함하는 경향이 있습니다. 설치 프로그램이 이 정보 중 일부가 중복되거나 사용자에게 표시되지 않는 것으로 간주하고 해당 결정을 상속하고 싶은 경우 설치 프로그램의 결정을 상속하는 것이 유용합니다.
배포판의 설정/설치 프로그램이 이미 이 정보를 표시/제공했다고 생각했기 때문에 어디서 얻을 수 있는지 궁금했습니다.
감사해요:)
답변1
사용자가 모두 숙련된 Linux 관리자가 아닌 경우 다른 옵션보다 tzselect가 더 직관적일 수 있습니다. 사용자가 지역, 국가, 지역을 선택할 수 있는 CLI 메뉴 방식의 시스템입니다. 첫 번째 메뉴는 이렇습니다.
root@scrspdimsolr01:~# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
1) Africa
2) Americas
3) Antarctica
4) Asia
5) Atlantic Ocean
6) Australia
7) Europe
8) Indian Ocean
9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the timezone using the Posix TZ format.
#?
몇 가지 옵션 후에 개인 시간대 변수를 설정하는 데 사용할 수 있는 명령을 출력합니다. 출력을 구문 분석하여 사용하거나 후속 조치를 취하여 사용자가 제안된 응답을 잘라내어 다른 프롬프트에 붙여 넣을 수 있습니다. 메뉴 탐색 후 결과는 다음과 같습니다.
You can make this change permanent for yourself by appending the line
TZ='America/Los_Angeles'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
America/Los_Angeles
마지막 줄은 STDOUT으로 전송되므로 이를 설정하거나 사용자의 .profile로 파이프할 수 있습니다(.profile은 별도의 Linux 로그인용이거나 인스턴스에서 해당 사용자에 대한 실시간 시간대를 설정할 수 있음). .
답변2
나는 모든 배포판이 IANA TZ 데이터베이스와 함께 제공된다고 생각합니다. Fedora와 Debian 모두 패키지는 tzdata
당신이 찾고 있는 것입니다 /usr/share/zoneinfo
. 그러나 가장 쉬운 방법은 이 구문 분석된 정보를 제공하는 일부 라이브러리를 사용하는 것입니다. 사용하는 언어나 프레임워크에 따라 다릅니다. 예를 들어 Python을 사용하는 경우 datetime
및 zoneinfo
(지역정보3.9에 추가되어 다음을 사용할 수도 있습니다.피츠비슷한 API가 있지만 Python 표준 라이브러리의 일부는 아닙니다.) 모듈:
import datetime
import zoneinfo
zoneinfo.available_timezones() # simple list of all timezones
zoneinfo.ZoneInfo('US/Alaska').utcoffset(datetime.datetime.now()) # utc offset in datetime format
이것은 실제로 Fedora 설치 프로그램 Anaconda가 수행하는 작업입니다.하다Python으로 작성되었기 때문입니다.