国際的な開発-タイムゾーンの知識


タイムゾーンの概念:
タイムゾーンは地球上で統一された法定標準時間を持つ地域である.地域の法的定義は千差万別で、頻繁に変更される可能性があるため、タイムゾーン・ルールを正しく適用するには、通常、データベースまたはテーブルを検索する必要があります.
タイムゾーン・データベース
現在、通常は2つの異なるタイムゾーン・データベースが使用されています.
1.Microsoft Windowsタイムゾーンデータベース
Microsoftによる保守
  • はWindowsプラットフォームで実現される.
  • Windows API取得タイムゾーンkey例:"China Standard Time"
  • 2.IANA/オルソンタイムゾーンデータベースはZoneInfo、TZDBまたはTZデータベースとも呼ばれ、国際標準タイムゾーン
  • はLinux、Mac、IOS、Andorid、JavaScript、Java、PHP、その他多くのプラットフォームで広く実現されています.
  • Android,IOS,MAC,Web API取得ローカルタイムゾーンkey例:"Asia/Shanghai"
  • タイムゾーン情報
    {
    	"alias": ["Asia/Chongqing", "Asia/Chungking", "Asia/Harbin", "CTT", "PRC"],
    	"offset": "480",
    	"text": "    ",
    	"id": "Asia/Shanghai",
    	"desc": "(GMT+08:00)        -   "
    }
    

    offset:タイムゾーンオフセット、すなわちローカル時間とUTC間の時間差.単位:分注意オフセットはすべて整数時間ではありません.たとえば、(GMT+08:40)(GMT+09:30)
    問題1:
    例えばAndroid,ios,MACはシステムインタフェースを用いてid:Asia/Shhanghaiを取得する.しかし、Windowsプラットフォームで取得したidは「China Standard Time」であり、タイムゾーン情報リストのidとは異なる.
    したがって、Windowsタイムゾーンと国際タイムゾーンのマッピングテーブルを使用して、現在の国際タイムゾーンidがバックグラウンドと統一的に対話していることを確認する必要があります.
    問題2:
    offsetは、オフセットの分数、タイムゾーンオフセット量、すなわちローカル時間とUTCとの時間差を表し、UTCの場合、タイムゾーンの東側は正の値である.しかし、一部のプラットフォームで取得されたoffsetは正負逆です.
    JavaScript、Python、CはUTCとローカル時間の差を返します.Java、C#、Rubyは、ローカル時間とUTCの差を返します.
    問題3:
    タイムゾーンのオフセットが変わる場合があります.これらの地域はサマータイムを採用しているからです.サマータイムとは、あるタイムゾーンが春に時間を前に移動し(通常は1時間)、秋に後ろに移動する時間帯を指す.
  • は、タイムゾーンごとに1時間変換されるわけではありません.たとえば、Australia/Lord_Howeのタイムゾーンは30分だけオフセットされます.
  • 世界各国の政府は夏の時間の方式をよく変えている.現在のルールが過去に常に適用されたか、将来的に常に適用されたとは仮定できません.

  • そのため、バックグラウンドからタイムゾーンリストを抽出するのが良いかもしれませんが、バックグラウンドではスクリプトで国際標準タイムゾーン情報を定期的に抽出して変更します.