tl; др
• Неверный класс : OffsetDateTime
, а не LocalDateTime
.
• Заменить пробел на T
для стандартного формата, используемого по умолчанию.
OffsetDateTime.parse( // Do NOT use `LocalDateTime` class, use `OffsetDateTime` because your input has an offset-from-UTC.
"2019-02-22 19:29:43+00:00"
.replace( " " , "T" ) // Replace SPACE in middle with a `T` to comply with ISO 8601 standard format.
) // Returns a `OffsetDateTime`.
См. этот код, запущенный в режиме реального времени на IdeOne.com.
Неверный тип
Ваша входная строка включает смещение от UTC .
Но вы пытаетесь разобрать это как LocalDateTime
. A LocalDateTime
не имеет понятия часовой пояс или смещение от UTC, потому что не представляет момент.Итак, квадратный колышек, круглое отверстие .Вы отбрасываете ценную информацию.
Вместо этого вы должны анализировать как OffsetDateTime
.
ISO 8601
Ваша входная строка почти стандартна ISO 8601 формат.Для полного соответствия просто замените ПРОБЕЛ в середине на T
.
String input = "2019-02-22 19:29:43+00:00".replace( " " , "T" ) ;
Форматы ISO 8601 по умолчанию используются классами java.time при разборе / генерации строк.Поэтому нет необходимости указывать шаблон форматирования.
OffsetDateTime odt = OffsetDateTime.parse( input ) ;
О java.time
Фреймворк java.time встроен в Java 8и позже.Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java.time классы.
Вы можете обмениваться java.time объектами напрямую с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .