6

を使用して日付と時刻を含む文字列を解析しようとしていますjava.time.format.DateTimeFormatter(私の最終的な目標は、この文字列から日付を取得することですjava.time.LocalDate)。

日付を解析しようとすると、DateTimeParseExceptions が発生し続けます。誰か助けてくれませんか?

日付の形式は「2015-07-14T11:42:12.000+01:00」です。

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ");
LocalDateTime temp = LocalDateTime.ofInstant(Instant.from(f.parse(this.dateCreated)), 
                 ZoneId.systemDefault());
LocalDate localDate = temp.toLocalDate();

私は ofPattern でさまざまなバリエーションを試しました。たとえば、T を一重引用符で囲んでエスケープしようとしたり (上記のように)、. 両方を同時にエスケープしようとしました。

コロンもエスケープする必要がありますか?

これについての助けに感謝します。

4

2 に答える 2

9

そのはず

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

//or

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSz");

それ以外の

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ");

JAVADoc から:

Offset X and x: パターン文字の数に基づいてオフセットをフォーマットします。1 文字は、'+01' のように時間だけを出力します。ただし、分がゼロ以外の場合は、'+0130' のように分も出力されます。'+0130' のように、2 文字で時と分をコロンなしで出力します。'+01:30' のように、コロンを使用して 3 文字で時と分を出力します。4 文字は、'+013015' のように、時と分、およびオプションの秒をコロンなしで出力します。5 文字は、'+01:30:15' のように、時と分、およびオプションの秒をコロンで出力します。6 文字以上は IllegalArgumentException をスローします。パターン文字 'X' (大文字) は、出力されるオフセットがゼロの場合に 'Z' を出力しますが、パターン文字 'x' (小文字) は '+00' を出力します。

于 2016-02-02T15:05:07.300 に答える
2

「yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ」と「yyyy-MM-dd'T'HH:mm:ss.SSSVV」の両方が機能します。5 つの Z が機能することに注意してください。

于 2016-02-02T18:14:34.277 に答える