В java Попытка преобразовать 2020-11-22T05: 57: 10 + 01: 00 в объект Java Date

try {
    SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-DD'T'HH:mm:ss+hh:mm");
    Date dateTime = format .parse("2020-11-22T05:57:10+01:00");
    System.out.println(dateTime);
} catch (ParseException e) {
    e.printStackTrace();
}

Выше указано Sun Dec 29 05:00:10 IST 2019, часть 57 минут потеряна. Указанную выше дату я получаю из ответа JSON с TimeZone Europe/Berlin. В настоящее время я не включаю TimeZone. Как правильно обращаться к этой строке при преобразовании в объект Java Date?

Правильно ли приведенное выше преобразование? Если нет, то как преобразовать эти данные?


person Dnyaneshwar Jadhav    schedule 29.01.2021    source источник
comment
Ваш формат неверен. Вероятно, должно быть yyyy-MM-dd'T'HH:mm:ssZ обратите внимание, что формат чувствителен к регистру DD не то же самое, что dd   -  person Lino    schedule 29.01.2021
comment
Кроме того, вам следует отойти от java.util.Date-class и к тем, которые предоставлены в java.time-package, представленном в Java 8. Эти новые классы намного проще в использовании и имеют много преимуществ по сравнению со своими старыми аналогами.   -  person Lino    schedule 29.01.2021
comment
@Lino Ваш, вероятно, ответ мне не помог, он не работает во время выполнения с неразборчивой строкой. и ссылка, также упомянутая, не имеет аналогичного формата. не могли бы вы снова открыть этот вопрос.   -  person Dnyaneshwar Jadhav    schedule 29.01.2021
comment
Сделал опечатку в исходном формате. Z в конце должен быть X: yyyy-MM-dd'T'HH:mm:ssX   -  person Lino    schedule 29.01.2021
comment
Я рекомендую вам не использовать SimpleDateFormat и Date. Эти классы плохо спроектированы и давно устарели, а первые, как известно, доставляют много хлопот. Вместо этого просто используйте OffsetDateTime из java.time, современного API даты и времени Java.   -  person Ole V.V.    schedule 30.01.2021
comment
Я добавил еще пару ссылок на оригинальные вопросы. Пожалуйста, посмотрите, бесполезны ли они. И ищите еще больше. Если вы все еще не дошли. опубликуйте новый вопрос, включая то, что вы узнали и что, по вашему мнению, вам все еще не хватает. Мы здесь, чтобы помочь.   -  person Ole V.V.    schedule 30.01.2021
comment
Спасибо @ OleV.V. Я читал некоторые API Joda-Time. И он напрямую учитывает строковый формат даты и времени и автоматически преобразует в дату и время с помощью TimeZone. Всегда ли joda-time конвертируется в формат времени UTC? потому что после помещения кода в Joda lib он дает мне время в формате UTC. Ваши дополнительные ссылки полезнее :)   -  person Dnyaneshwar Jadhav    schedule 01.02.2021
comment
Всегда ли joda-time конвертируется во время UTC? Нет, это полностью зависит от кода. Он будет стандартным образом анализировать часовой пояс JVM по умолчанию, поэтому, если это UTC, это, вероятно, объясняет ваше наблюдение. Метод withOffsetParsed для DateTimeFormattter указывает Joda-Time вместо этого использовать смещение от строки. Но если возможно, вам, вероятно, следует предпочесть java.time вместо Joda-Time.   -  person Ole V.V.    schedule 01.02.2021