tl; др
Instant.parse( "2018-05-23T23:18:31.000Z" ) // Parse this String in standard ISO 8601 format as a `Instant`, a point on the timeline in UTC. The `Z` means UTC.
.atOffset( ZoneOffset.UTC ) // Change from `Instant` to the more flexible `OffsetDateTime`.
.format( // Generate a String representing the value of this `OffsetDateTime` object.
DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ) // Specify a formatting pattern as desired.
) // Returns a `String` object.
2018-05-23 23: 18: 31
ISO 8601
Ваша входная строка находится встандартный ISO 8601 формат.
Классы java.time по умолчанию используют эти стандартные форматы при разборе / генерации строк.
T
отделяет часть год-месяц-день от часа-минуты-секунды.Z
произносится Zulu
и означает UTC .
java.time
Вы используете проблемные старые классы даты и времени, которые были вытеснены несколько лет назад java.time классы.Apache DateUtils
также больше не нужен, так как его функциональность вы найдете в java.time .
Анализ этой входной строки как Instant
объекта.Класс Instant
представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифр десятичной дроби).
String input = "2018-05-23T23:18:31.000Z" ;
Instant instant = Instant.parse( input ) ;
Чтобы сгенерировать строку в другом формате, нам нужен более гибкий объект.Класс Instant
должен быть базовым строительным блоком.Позвольте s convert it to a
OffsetDateTime`, используя сам UTC в качестве указанного смещения от UTC.
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
Определите шаблон форматирования, чтобы соответствовать желаемому выводу.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ) ;
String output = odt.format( f ) ;
Совет: Рассмотримиспользование DateTimeFormatter::ofLocalized…
методов для автоматической локализации генерации строки для некоторого Locale
вместо жесткого кодирования шаблона форматирования.
О java.time
Инфраструктура java.time встроена в Java 8 и более поздние версии.Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Вы можете обмениваться java.time объектами непосредственно с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .