ТЛ; др
Instant.parse( "2010-10-02T12:23:23Z" )
ISO 8601
Этот формат определяется стандартом ISO 8601 для строковых форматов даты и времени.
Оба:
… по умолчанию использовать форматы ISO 8601 для анализа и генерации строк.
Как правило, следует избегать использования старых классов java.util.Date /. Calendar & java.text.SimpleDateFormat, поскольку они заведомо хлопотны, сбивают с толку и имеют недостатки. Если требуется для взаимодействия, вы можете конвертировать туда и обратно.
java.time
Встроенная в Java 8 и более поздние версия представляет собой новую java.time инфраструктуру. Вдохновлено Joda-Time , определено JSR 310 и расширено проектом ThreeTen-Extra .
Instant instant = Instant.parse( "2010-10-02T12:23:23Z" ); // `Instant` is always in UTC.
Преобразовать в старый класс.
java.util.Date date = java.util.Date.from( instant ); // Pass an `Instant` to the `from` method.
Часовой пояс
При необходимости вы можете назначить часовой пояс.
ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Define a time zone rather than rely implicitly on JVM’s current default time zone.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId ); // Assign a time zone adjustment from UTC.
Convert.
java.util.Date date = java.util.Date.from( zdt.toInstant() ); // Extract an `Instant` from the `ZonedDateTime` to pass to the `from` method.
Joda-Time
ОБНОВЛЕНИЕ: проект Joda-Time сейчас находится в режиме обслуживания. Команда рекомендует перейти на классы java.time .
Вот пример кода в Joda-Time 2.8.
org.joda.time.DateTime dateTime_Utc = new DateTime( "2010-10-02T12:23:23Z" , DateTimeZone.UTC ); // Specifying a time zone to apply, rather than implicitly assigning the JVM’s current default.
Преобразовать в старый класс. Обратите внимание, что назначенный часовой пояс теряется при конвертации, так как j.u.Date не может быть назначен часовой пояс.
java.util.Date date = dateTime_Utc.toDate(); // The `toDate` method converts to old class.
Часовой пояс
При необходимости вы можете назначить часовой пояс.
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime dateTime_Montreal = dateTime_Utc.withZone ( zone );
О 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 .