2016-05-06 3 views
3
異なる

です。ZonedDateTimeが正常に解析しますが、出力文字列は、私が解析し、時間帯に応じて現在の時間を取得するために<code>ZonedDateTime</code>を使用しています

次のように解析すると、解析は成功しますが、出力はStringとは異なります。何故ですか?

String dateTimeString = "2016-05-04T12:58:22+01:00[Europe/Paris]"; 
ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString, ISO_ZONED_DATE_TIME); 
System.out.println(dateTimeString); 
System.out.println(dateTime.toString()); 

それは+2+1を変更することを決定したと、なぜ例外がスローされませんでしたか?どの時点での出力

2016-05-04T12:58:22+01:00[Europe/Paris] 
2016-05-04T12:58:22+02:00[Europe/Paris] 

私はParentheseの[Europe/Paris]におけるパラメータはオプションであることを理解しますが、ここでは、オフセットよりも優先されます。

一方、次のコード

String dateTimeString = "2016-05-04T12:58:22+01:00"; 
ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString, ISO_ZONED_DATE_TIME); 
System.out.println(dateTimeString); 
System.out.println(dateTime.toString()); 

は、問題は、我々はCEST(中央ヨーロッパ夏時間、夏時間を持っているよう2016-05-04T12:58:22+01:00[Europe/Paris]は、正しい時間ではないこと、である出力

2016-05-04T12:58:22+01:00 
2016-05-04T12:58:22+01:00 

答えて

6

を生成5月には3月の最後の日曜日に始まります。 UTCと比較して+ 2時間です。だから、実際に2016-05-04T12:58:22+02:00[Europe/Paris]は正しいです。

あなたが言ったように、[Europe/Paris]はも優先を取るように見えます。もしわからないがスペックに関してで例外で、私はそれを疑う必要があります。

2016-05-04T12:58:22+01:00は別の言い方をすると、タイムゾーンEurope/Parisにすることはできません。

+0

ご回答ありがとうございます。私はそれが間違った日付であることを理解しています、なぜそれは正常に解析されますか?それは設計上の欠陥です。 – Olayinka

+2

私は、仕様で定義された優先順位がありますよね。しかし、私はそれを確認しなかった。 – spa

関連する問題