web-dev-qa-db-ja.com

タイムゾーンコンポーネントなしのDateTimeISO 8601

私は、国際的なアプリケーションのために日時文字列を解析する作業を行ってきました。決定的な答えが見つからないという解釈の問題に直面しています。 タイムゾーンコンポーネントのないISO 8601日時文字列は現地時間として扱われるべきですか?

あたり ウィキペディア (これに基づいてビジネス上の意思決定をしたくない):

UTC関係情報が時間表現で指定されていない場合、時間は現地時間であると見なされます。

ただし、ISOまたはその他の一般的に受け入れられる信頼できる情報源を介したサポートドキュメントは見つかりません。私が見つけたものはすべて、現地時間のオフセットを処理する方法について話します(たとえば、+/-0500など)。これらの場合に現地時間を想定すると、ユーザーは各地域の特定のオフセットを計算する必要なしに、すべての地域に同じ日付を送信できるため、実質的に役立ちます。

例えば:

2012-01-01T00:00:00 # Convert to local
2012-01-01T00:00:00Z # Zulu/UTC...don't convert

タイムゾーンのないISO8601文字列の確立された解釈はありますか?

15
Devin

ISO 8601のセクション4.2.2は、現地時間であると言うTZ指定子のない例を示しています。 4.2.4は、UTC時間は「Z」指定子を使用すると述べています。もちろん、それは常に「現地時間どこ?」という質問を提起します...

4.2.2.2から4.2.2.4に従って現地時間を使用する場合、ゾーン指定子は空です。4.2.4に従ってUTCを使用する場合、それはUTC指定子[Z]であり、それが違いです。 -現地時間と4.2.5.2に準拠したUTCとの差を使用する場合のコンポーネント。

12
John3136

タイムゾーン指定子がない場合、日時文字列は現地時間として解釈されますが、サーバーへの現地時間として解釈されます。

ユーザーが異なるタイムゾーンにいる場合、ユーザーがTZ情報なしで送信した日付は、ローカルのTZオフセットで誤って解釈されます。

0
btk