tl; др
Использование java.time классы.
OffsetDateTime // Represent a moment as a date, a time-of-day, and an offset-from-UTC (a number of hours, minutes, seconds) with a resolution as fine as nanoseconds.
.now( // Capture the current moment.
ZoneOffset.UTC. // Specify your desired offset-from-UTC. Here we use an offset of zero, UTC itself, predefined as a constant.
) // Returns a `OffsetDateTime` object.
.format( // Generate text in a `String` object representing the date-time value of this `OffsetDateTime` object.
DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSSSSxxxxx" , Locale.US )
) // Returns a `String` object.
2018-09-27T05: 39: 41.023987 + 00: 00
Или используйте Z
для UTC.
Instant.now().toString()
2018-09-27T05: 39: 41.023987Z
Java.время
Современный подход использует java.time , который вытеснил ужасные старые классы даты и времени.
В частности:
- Использование
Instant
или OffsetDateTime
вместо java.util.Date
. - Используйте
DateTimeFormatter
вместо `SimpleDateFormat.
Получите текущее время в UTC.Мы используем класс OffsetDateTime
вместо Instant
для более гибкого форматирования при генерации текста.
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = OffsetDateTime.now( offset );
Определите шаблон форматирования, соответствующий желаемому результату.Обратите внимание, что встроенные шаблоны форматирования используют Z
в качестве стандартного сокращения для +00:00
.Z
означает UTC и произносится как «зулу».Этот формат времени Зулу довольно распространен.Я предлагаю использовать такие форматы с Z
.Но вы явно запросили длинную версию смещения от UTC, равную нулю, поэтому мы должны использовать пользовательский объект DateTimeFormatter
.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSSSSxxxxx" , Locale.US );
String output = odt.format( f );
2018-09-27T05: 39: 41.023987 + 00: 00
К вашему сведению, обсуждаемые здесь форматы соответствуют стандарту ISO 8601 .
О 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?