私は、ユーザーが詳細にあまりにも多くの情報を入力することなく、特定のタスクに対して実際のタイムゾーンとは異なるタイムゾーンを選択できるアプリケーションを構築しています。あります。
私は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で書かれたからです。