1. ホーム
  2. java

[解決済み] LocalDateTimeのパース時にTemporalAccessorからLocalDateTimeを取得できない(Java 8)

2022-02-01 18:30:47

質問

私は、Java 8で日付文字列をDateTimeオブジェクトに変換しようとしているだけです。以下の行を実行すると

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDateTime dt = LocalDateTime.parse("20140218", formatter);

以下のようなエラーが発生します。

Exception in thread "main" java.time.format.DateTimeParseException: 
Text '20140218' could not be parsed: 
Unable to obtain LocalDateTime from TemporalAccessor: 
{},ISO resolved to 2014-02-18 of type java.time.format.Parsed
    at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1918)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1853)
    at java.time.LocalDateTime.parse(LocalDateTime.java:492)

構文は、これまで提案されてきたものと同じです。 ここで しかし、例外が発生します。私は JDK-8u25 .

解決方法は?

Javaは素のDate値をDateTimeとして受け入れないことが判明しました。LocalDateTimeの代わりにLocalDateを使用することで、この問題は解決します。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate dt = LocalDate.parse("20140218", formatter);