java.time.format.DateTimeParseException с использованием DateTimeFormatter - PullRequest
0 голосов
/ 09 июня 2018

У меня есть этот код:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .appendPattern(DateType.DATE_FORMAT)
        .appendOffset("+HH:mm", "+00:00")
        .toFormatter();
ZonedDateTime.parse("2018-06-09T14:09:30.020+03:00[Europe/Tallinn]", formatter);

DateType.java:

public class DateType {

    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_TIME_ZONE_FORMAT = DATE_FORMAT + "XXX";
}

Но, я запускаю этот код, у меня ошибка:

java.time.format.DateTimeParseException: Text '2018-06-09T14:09:30.020+03:00[Europe/Tallinn]' could not be parsed at index 10

Насколько я понимаю, это из-за форматера.Что может быть не так?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Что может быть не так?

Я бы сказал, что вы найдете в индексе 10, как говорится в сообщении об ошибке.Т - то, что не так.Поскольку вы никогда не упоминали ни одного в своем DATE_FORMAT, вместо этого у вас есть пробел.

После этой проблемы у вас возникнет проблема, связанная с тем, что ваша строка содержит имя часового пояса в дополнение к смещению, о котором ваш форматер не был проинформировано.

Как говорится в другом ответе, эти проблемы можно исправить, просто полагаясь на парсеры по умолчанию, так как они понимают этот формат.

0 голосов
/ 09 июня 2018

Интересно, почему вы не попробовали парсер по умолчанию.Я думаю, что это работает, как ожидалось.

String dateTime = "2018-06-09T14:09:30.020+03:00[Europe/Tallinn]";
ZonedDateTime z = ZonedDateTime.parse(dateTime);
System.out.println(z);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...