1


0

タイムゾーン識別子を名前に変換しますか? (アジア/カルカッタからインド標準時)

私はphp(codeigniter)プロジェクトに取り組んでいます。 私はさまざまなタイムゾーンとサーバーのタイムゾーンの間で時間を変換するためにタイムゾーンで多くの作業を行ってきました。

phpタイムゾーン識別子を略語に変換する方法を知っています(Asia / CalcuttaからISTなど)。 しかし、今、この略語(インド標準時)の拡張が必要です。

PHPコードでこれを行う方法、または変換するWebサービスはありますか? これがタイムゾーンプログラミングの完全な習得の最後のステップです! :)

編集:回答者の一人が指摘したように、略語は曖昧な場合があります。 しかし、タイムゾーン識別子はそうではありません。 「アジア/カルカッタ」を「インド標準時」に直接変換できますか? あいまいさはありません。

4 Answer


5


一般的には、あいまいであるため、できません。同じ略語が異なるタイムゾーンに使用されます。

例:

  • CDT:中央夏時間(アメリカ/カンクン、アメリカ/シカゴ、…​)

  • CDT:メキシコ中央夏時間(アメリカ)

  • CDT:キューバ中央夏時間(アメリカ)

  • CDT:カナダ中部夏時間(アメリカ)

ISTでも一意ではありません。

  • IST:アイルランドの夏時間(ヨーロッパ)

  • IST:インド標準時(アジア)

  • IST:イスラエル標準時(zicではない)

ただし、いくつかのヒューリスティックがあります。 たとえば、PostgreSQLには、ターゲットオーディエンスの大陸に応じて交換できる複数のタイムゾーンセットが付属しています。


1


タイムゾーンの略語、タイムゾーンのオフセット、タイムゾーンの拡張の間に1対1のマッピングはありません。 たとえば、「CDT」は「UTC + 10:30」(オーストラリア)と「UTC-5」(北米)の両方にマッピングされる「中央夏時間」を表します。 略称は同じですが、異なる大陸と時間オフセットに対応しています。

同様に、「CST」は「中部標準時」および「中部夏時間」であり、「UTC + 9:30」、「UTC-6」、および「UTC + 10:30」の3つのオフセットにマッピングされます

上記で参照した「IST」も「Irish Summer Time」であり、「UTC + 1」にマッピングされます

だから、あなたの質問に答えるために、いや、あなたはそれをすることはできません。 タイムゾーンプログラミングで習得したい場合は、そのISO仕様を参照してください。


1


_ * @ Munim *:ああ…​ これについては知りませんでした。 その場合、Asia / Calcuttaなどのタイムゾーン識別子をインドの標準時間に変換する方法を知っていますか? あいまいさはありません。 _

うん、(ほとんど)あいまいさはまったくありません。 ほとんどの場合、タイムゾーン識別子は夏時間と政治的変化に応じていくつかの略語にマッピングされる可能性があるためです。 PHPでは、 `DateTimeZone

listAbbreviations()(tzdbの夜明け以降に使用された略語がすべて表示されるため、これはあまり信頼性がありません)または `DateTimeZone :: getTransitions()-this配列を逆方向にトラバースし、DSTを監視していない最初の遷移「abbr」を返す場合、1つが優れています。


0


このPHP関数timezone_name_from_abbr()を見る必要があるかもしれません