Я использую Java SimpleDateFormat
Не.
Избегайте коварных старых классов даты и времени, связанных с самыми ранними версиями Java. Они были вытеснены несколько лет назад классами java.time , когда был принят JSR 310.
преобразовать входящее длительное значение в микросекунды в миллисекунды
Не.
Классы java.time используют разрешение наносекунд , что меньше, чем ваши микросекунды. Поэтому не нужно выбрасывать данные.
Instant
= (целые секунды + дробная секунда в виде нано)
Извлечь количество целых секунд.
long seconds = TimeUnit.MICROSECONDS.toSeconds( micros ) ;
Получите долю секунды, количество микросхем, оставшихся после вычитания на целые секунды.
long microsRemaining =
micros
-
TimeUnit.SECONDS.toMicros( seconds )
;
Преобразуйте оставшиеся микро в нано, потому что класс Instant
, который мы используем далее, представляет количество целых секунд плюс количество наносекунд (за долю секунды).
long nanos = TimeUnit.MICROSECONDS.toNanos( microsRemaining ) ;
Объедините целые секунды с долей секунды в нанослоях. Класс Instant
представляет момент в UTC в виде числа отсчетов с начала отсчета первого момента 1970 года в UTC, 1970-01-01T00: 00Z.
Instant instant = Instant.ofEpochSecond( seconds ).plusNanos( nanos ) ;
Чтобы сгенерировать строку в стандартном формате ISO 8601, просто наберите toString
.
String output = instant.toString() ;
Z
в конце строки означает UTC (смещение от UTC, равное нулю часов-минут-секунд) и произносится как Zulu
.
Вы можете создавать строки в собственных форматах, используя класс DateTimeFormatter
. Переполнение стека поиска , поскольку это уже было рассмотрено много-много раз.
Подсказка: Ваш желаемый формат настолько близок к формату ISO 8601, ГГГГ-ММ-ДДЧЧ: ММ: ССЗ, что Я настоятельно рекомендую использовать стандартный формат , а не создавать своего двоюродного брата из этого .
Если вы хотите увидеть этот же момент через объектив настенного времени, используемого людьми определенного региона (часового пояса), примените ZoneId
, чтобы получить ZonedDateTime
.
ZoneId z = ZoneId.of( "Africa/Tunisia" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
О 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 .