tl; dr
Instant.now().
.truncatedTo( ChronoUnit.MILLISECONDS ) ;
.toString()
2018-01-23T01: 23: 45.123Z
Вопрос безопасности потока?
То естьстранного поведения я не слышал.Мое первое предположение - проблема с многопоточностью.Унаследованные классы даты и времени не поточно-ориентированы.Их замены, классы java.time , полностью поточнобезопасны.
java.time
Вы можете заменить эти проблемные старые унаследованные классы.Они были вытеснены несколько лет назад на Java современными java.time классами.Для Android см. Маркеры ниже.
Instant
Класс java.util.Date
был заменен на java.time.Instant
.Класс Instant
представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифр десятичной дроби).
Instant instant = Instant.now() ; // Capture the current moment in UTC.
Если вам нужны только миллисекунды, вы можете усечь любые микросекунды или наносекунды, которые могут присутствовать в вашем Instant
.
Instant instantTruncated = instant.truncatedTo( ChronoUnit.MILLISECONDS ) ;
ISO 8601
Ваш желаемый формат вывода определяется стандартом ISO 8601 .
Классы java.time по умолчанию используют эти стандартные форматы при разборе / генерации строк.Поэтому не нужно указывать шаблон форматирования.
String output = instant.toString();
2018-01-23T01: 23: 45.123Z
О 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 .