0

次のように正確に表示されるタイムゾーンのリストを表示する方法を見つけるために、私は何時間も探していました。

ここに画像の説明を入力

略語のリスト、gmt を含むリストを表示する方法を見つけましたが、中央ヨーロッパ時間のような名前を取得するにはどうすればよいですか

ヨーロッパ/アムステルダム、ヨーロッパ/ベルリンなどの名前のリストしか見つかりません。これはまさに私が必要としないものです。

確かに、カスタム選択を作成できることは知っていますが、代わりにphpでそのようなリストを作成したいと思います。

4

1 に答える 1

3

あなたが示したリストの例は、US Naval Observatory の Time Service Dept.によって提供されたデータから派生したように見えます。それ以来、彼らは「ソ連ゾーン 3」のような名前を「ロシア連邦ゾーン 3」と呼ぶように更新しました。しかし、これらはタイム ゾーンに名前を付ける必要があると考える管理者の個人的な解釈にすぎません。彼らは決して公式ではありません。

Web を検索すると、他の多くの静的な Web サイト (ここここなど) を見つけることができます。そうではありません。つまり、あなたがロシアに住んでいるなら、「タイムゾーン3」に従っていると本当に言うと思いますか? いいえ、おそらく「モスクワ時間」または「モスクワ標準時」に従っていると言うでしょう。(ウィキペディアのロシアの時間に関するエントリを参照してください。)

これはほんの一例ですが、タイムゾーン名をどこから取得するかという問題はありますか? 一般的な問題は、それらがTZDB データにないため、PHP がそれらを返してくれないことです。私が説明したように、それらは解釈の対象です。タイムゾーンの略語も解釈の対象となります。より良い解釈が必要な場合は、ここで提供されている解釈の方がより妥当と思われます。ただし、目的のためにフィルタリングする必要があるでしょう。

タイムゾーン名のより良いソースは、Unicode CLDRから得られます。彼らは、多くのものをさまざまな言語に翻訳する非常に大きなデータ セットを提供しており、それらがカバーするものの 1 つはタイム ゾーンの名前です。しかし、CLDR データから IANA タイム ゾーン キーからタイム ゾーン名を取得するには、多くの手順を踏まなければなりません。

もちろん、これらすべてを XML または JSON データ ソースからプログラムで実行する必要があります。そして、興味のあるタイムゾーンごとにそれを行う必要があります.

なぜそんなに面倒なことをするのですか?フランス語など、別の言語を話すユーザーがいる場合、「Central European Standard Time」または「heure normale de l'Europe centrale」を表示しますか? そのような翻訳を提供できるのは CLDR だけです。

ですから、これがすぐに使用できる PHP コードを直接提供するものではないことはわかっていますが、これが直接可能でない理由と、出くわすほぼすべてのリストが誰かの個人的な解釈の対象となり、古くなっているか、部分的に間違っている可能性があります。

于 2013-09-08T17:16:32.093 に答える