java - не разбираемая дата при использовании SimpleDateFormat - PullRequest
1 голос
/ 25 марта 2020

Я пытаюсь прочитать данные из RSS-каналов, и одно из полей - время последнего обновления канала. Я использую что-то похожее на это:

Date date;
String output;
SimpleDateFormat formatter;

String pattern = "EEE, dd MMM, HH:mm:ss Z";

formatter = new SimpleDateFormat(pattern, Locale.ENGLISH);
date = formatter.parse("Wed, 25 Mar 2020 08:00:00 +0200");
output = date.toString();
System.out.println(pattern + " | " + output);

, но я получаю эту ошибку:

Exception in thread "main" java.text.ParseException: Unparseable date: "Wed, 25 Mar 2020 08:00:00 +0200"
at java.text.DateFormat.parse(DateFormat.java:366)
at HelloWorld.main(HelloWorld.java:16)

1 Ответ

3 голосов
/ 25 марта 2020

java .time

java .time - это современный java API даты и времени, имеющий встроенный форматер для вашей строки:

    String lastUpdatedString = "Wed, 25 Mar 2020 08:00:00 +0200";
    OffsetDateTime dateTime = OffsetDateTime
            .parse(lastUpdatedString, DateTimeFormatter.RFC_1123_DATE_TIME);
    System.out.println(dateTime);

Output :

2020-03-25T08: 00 + 02: 00

Так что нет необходимости писать собственную строку шаблона формата, которая всегда подвержена ошибкам, и конечно, нет необходимости использовать класс SimpleDateFormat. Этот класс, как известно, является источником проблем в классе, поэтому мы все равно хотели его избежать.

Ссылка: Oracle учебное пособие: Дата и время объяснение, как использовать java .time.

...