日付文字列「2015-01-12T13:00:00.000+02:00」があります。JavaDoc を見ると、次のように表示されます。
z time-zone name zone-name Pacific Standard Time; PST Z zone-offset offset-Z +0000; -0800; -08:00;
したがって、+02:00 で指定されたゾーン形式があるため、それを解析するには大文字の「Z」を使用する必要があると思われます。
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.000Z");
しかし、それで解析エラーが発生します。
小文字の「z」を使用すると機能します。
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.000z")
誰が何が起こっているのか知っていますか?
コード:
DateTimeFormatter changetimeParser_Z = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.000Z");
DateTimeFormatter changetimeParser_z = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.000z");
String time = "2015-01-12T13:00:00.000+02:00";
ZonedDateTime time1 = ZonedDateTime.parse(time, changetimeParser_z);
System.out.println(time1);
ZonedDateTime time2 = ZonedDateTime.parse(time, changetimeParser_Z);
System.out.println(time2);
例外スタック トレース:
2015-01-12T13:00+02:00
java.time.format.DateTimeParseException: Text '2015-01-12T13:00:00.000+02:00' could not be parsed at index 23
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)