8

使用するシェルスクリプト(正確にはzsh)があります

strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"

次のような「現在の時刻」を生成する

「02:45 PM CST (Thu, Mar 01)」

これは、いくつかの異なる米国のタイムゾーンで時刻を表示できるようにする必要があるため、「US/Eastern」、「US/Central」、および「US/Pacific」を次のように使用しています。

export TZ='US/Eastern'
strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"

それは問題なく動作するようで、TZ='America/CityName' を使用することを好みます。どの都市がどの TZ にあるかを知る必要がないためです。必要な TZ を指定するだけで済みます。

しかし、たまたまhttp://www.php.net/manual/en/timezones.others.phpに出くわし、それが言うのを見ました

ここにリストされているタイムゾーン (UTC 以外) は使用しないでください。これらは下位互換性のためにのみ存在します。

米国/地域名にどのような問題があるのか​​はわかりませんが、それらを使用すると近い将来に問題が発生する可能性があるのか​​、それとも安全に使用できるのか知りたいです。それらを好まないのはPHPだけですか、それとも誰もがそれらから離れていますか?

4

1 に答える 1

9

Olson データベースでタイムゾーンを命名するための標準形式は、大陸/都市です。US/Eastern、US/Central などの「古い」名前は、tzdata ソース配布 (「後方」ファイル内) の下位互換性リンクとしてリストされています。ファイルの上部にあるコメントによると、これらの名前は 1993 年後半に下位互換性リンクになった可能性があります。

この基準が採用されたのは、より安定していると感じられたからだと読んだことを覚えていると思います。地政学的(国の)境界は変化し、都市は移動しません。おそらく、「東部」や「中央」などの名前は、世界のさまざまな地域で異なるタイムゾーンを意味するため、より混乱を招くと考えられているためです. ただし、現時点では命名の根拠への参照を見つけることができないため、これについて引用しないでください.

大陸/都市スタイルの名前が優先されます。Debian や Ubuntu などのオペレーティング システムでは、これらの名前を使用してシステムのタイムゾーンを選択するよう求められることに注意してください (インストール時に自動検出されない限り)。 which TZ" というのは、都市名がタイムゾーン名の一部だからです! したがって、国/地域の名前の代わりに、または国/地域の名前に加えて、大陸/都市の名前をたまたま学んだことがある場合は、すでに問題ありません。

そうは言っても、これらの名前が消えることはないと思います。タイムゾーン メーリング リストでは、これらは常に「非推奨」ではなく「下位互換性」と呼ばれており、PHP の推奨事項に関係なく、存続する予定です。

于 2012-03-03T15:15:38.840 に答える