tl;dr
LocalDateTime.parse( "2016-12-21T07:48:36" ) // Parse as a `LocalDateTime` given the lack of an offset or zone. *Not* an actual moment, only a rough approximation of potential moments along a range of about 26-27 hours.
.atOffset( ZoneOffset.ofHours( 14 ) ) // Assign an offset-from-UTC as context, giving meaning to determine an actual point on the timeline.
.toInstant() // Renders `Instant` object in UTC.
Java.время
Современный способ — это классы java.time, встроенные в Java 8 и более поздние версии. Большая часть функций обратно перенесена на Java 6 и 7 в ThreeTen-Backport. проект.
ZoneOffset offset = ZoneOffset.ofHours( 14 ); // fourteen hours ahead of UTC.
Разберите строку как LocalDateTime, поскольку она отсутствует какая-либо информация о смещении или зоне. Вводимые данные представлены в стандартном формате ISO 8601, поэтому шаблон форматирования указывать не нужно.
LocalDateTime ldt = LocalDateTime.parse( "2016-12-21T07:48:36" );
Примените смещение к локальной дате и времени, чтобы получить OffsetDateTime объект.
OffsetDateTime odt = ldt.atOffset( offset );
Из него извлеките Instant, который всегда находится в UTC.
Instant instant = odt.toInstant();
Instant.toString(): 2016-12-20T17:48:36Z
В UTC значением является другая дата, 20-е вместо 21-го.
См. действующий код на сайте IdeOne.com.
О java.time
java.time встроена в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar и SimpleDateFormat.
Проект Joda-Time, теперь в режим обслуживания, советует перейти на java.time.
Чтобы узнать больше, см. Учебное пособие по Oracle. И поищите множество примеров и пояснений в Stack Overflow. Спецификация: JSR 310.
Использование драйвера JDBC, совместимого с JDBC 4.2 или более поздней версии вы можете обмениваться объектами java.time непосредственно с вашей базой данных. Нет необходимости ни в строках, ни в классах java.sql.*.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. . Этот проект является испытательным полигоном для возможных дополнений к java.time в будущем. Здесь вы можете найти несколько полезных классов, таких как Interval a>, YearWeek, YearQuarter и подробнее.
person
Basil Bourque
schedule
21.12.2016