ТЛ; др
OffsetDateTime.of( 2018 , 1 , 23 , 12 , 34 , 56 , 0, ZoneOffset.UTC )
java.time
Современный подход использует классы java.time .
В отличие от утомительных устаревших классов даты и времени, java.time классы используют вменяемую нумерацию:
2018
означает 2018 год. (Без сумасшедшей математики с 1900 года.)
- 1-12 по месяцам январь-декабрь. (Не глупо 0-11.)
- 1-7 для понедельника-воскресенья для Стандартное определение недели ISO 8601 . (Не зависит от региона.)
Класс Instant
представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифр десятичного знака) доля).
Вы, если хотите, однострочник, если разбираете строку.
Instant instant = Instant.parse( "2018-01-23T12:34:56Z" ) ;
Хотя Instant
является базовым классом строительных блоков для java.time , класс OffsetDateTime
более гибок. Для вашего удобства смещение от UTC для UTC определено как константа .
OffsetDateTime odt = OffsetDateTime.of( 2018 , 1 , 23 , 12 , 34 , 56 , 0, ZoneOffset.UTC ) ;
Лично я предпочитаю использовать кусочки.
Вместо простого целого числа для месяца вы можете указать Month
объект перечисления.
LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ; // Date-only, without time-of-day.
LocalTime lt = LocalTime.of( 12 , 34 , 56 ) ; // Time-of-day, without date.
ZoneOffset offset = ZoneOffset.UTC ;
OffsetDateTime odt = OffsetDateTime.of( ld , lt , offset ) ;
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Используя драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии, вы можете обмениваться java.time объектами непосредственно с вашей базой данных. Нет необходимости ни в строках, ни в java.sql. * Классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .