tl; dr
Как преобразовать эту строку в объект Date
Date
заменено на java.time.Instant
.
Instant.parse( "2006-06-21T15:57:24.000Z" )
без изменения этого формата
Объекты даты и времени не имеют «формата».Только текст имеет формат.
String output = instant.toString() ; // Generate text in a `String` object in standard ISO 8601 format that represents the value of the `Instant` date-time object.
ISO 8601
Эта строка ввода имеет стандартный формат ISO 8601 .Z
в конце - это сокращение Zulu
и означает UTC .
java.time
Классы java.time по умолчанию используют форматы ISO 8601, когдаРазбор и генерация строк, представляющих значения даты и времени.
Класс Instant
представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифр десятичной дроби).
Instant instant = Instant.parse( "2006-06-21T15:57:24.000Z" );
Чтобы сгенерировать строку в стандартном формате ISO 8601, наберите toString
.
String output = instant.toString();
2006-06-21T15: 57:24Z
String! = Дата-время
Не объединяйте объект даты-времени со строкой, представляющей значение.Объект даты и времени может анализировать строку и может генерировать строку, но не является строкой.Другими словами, строка может быть введена и / или выведена, но не является самим объектом даты-времени.
Итак, ваш вопрос «Как преобразовать эту строку в объект Date без изменения этого формата» делаетне имеет смысла.
Чтобы сгенерировать строку в форматах, отличных от ISO 8601, преобразуйте ваш Instant
в OffsetDateTime
или ZonedDateTime
объект и используйтекласс DateTimeFormatter
.Поиск Переполнение стека для DateTimeFormatter
, чтобы увидеть больше обсуждений и много примеров.
Конверсия
По возможности избегайте старого java.util.Date
класса.Но если вам нужно взаимодействовать со старым кодом, который еще не обновлен до типов java.time, вы можете преобразовать его в / из java.time с помощью новых методов, добавленных к старым классам даты и времени.
java.util.Date utilDate = java.util.Date.from( instant );
… иидти в другом направлении…
Instant instant = utilDate.toInstant();
О 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?