Как включить миллисекунды в форматированную строку даты?

Привет, я кодирую следующее:

String sph=(String) android.text.format.DateFormat.format("yyyy-MM-dd_hh-mm-ss_SSS", new java.util.Date()); 

Я хочу текущую дату и время и миллисекунды

Что мне это дает:

 2011-09-01_09-55-03-SSS 

SSS не возвращается к миллисекундам …

Кто-нибудь знает, почему и что должно быть, чтобы получить миллисекунды в 3 позиции?

благодаря

Solutions Collecting From Web of "Как включить миллисекунды в форматированную строку даты?"

Используйте следующее:

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss_SSS"); String dateString = formatter.format(new java.util.Date()); 

ТЛ; др

 Instant.now().toString() 

Instant

Вы используете неприятные старые устаревшие классы времени. Вместо этого используйте классы java.time.

Если вы хотите ввести дату в UTC, используйте класс Instant . Этот класс имеет наносекундное разрешение, более чем достаточно для миллисекунд.

 Instant instant = Instant.now(); String output = instant.toString(); 

Этот метод toString использует форматировщик DateTimeFormatter.ISO_INSTANT который печатает 0, 3, 6 или 9 цифр в десятичной дроби, столько, сколько необходимо для фактического значения данных.

В Java 8 текущий момент фиксируется только до миллисекунды, но новая реализация Clock в Java 9 может занять до наносекунд . Таким образом, урезайте до миллисекунды, если это ваше требование. Укажите желаемое усечение с помощью TemporalUnit как реализовано в ChronoUnit.MILLIS .

 Instant instant = Instant.now().truncatedTo( ChronoUnit.MILLIS ); 

ZonedDateTime

Если вы хотите указать часовой пояс, примените ZoneId чтобы получить ZonedDateTime .

 Instant instant = Instant.now().truncatedTo( ChronoUnit.MILLIS ); ZoneId zoneId = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = instant.atZone( zoneId ); String output = zdt.toString(); 

Опять же, если вы хотите другие форматы, выполните поиск стека переполнения для DateTimeFormatter .

О java.time

Рамка java.time встроена в Java 8 и более поздних версий . Эти классы вытесняют старые неприятные классы времени, такие как java.util.Date , java.text.SimpleDateFormat и java.text.SimpleDateFormat .

Проект Joda-Time , теперь в режиме обслуживания , советует перейти на java.time.

Дополнительную информацию можно найти в учебнике Oracle . И поиск Stack Overflow для многих примеров и объяснений.

Большая часть функциональности java.time возвращается на Java 6 и 7 в ThreeTen-Backport и далее адаптирована для Android в ThreeTenABP .

Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval , YearWeek , YearQuarter и т. Д.

Попробуйте использовать тот же формат с SimpleDateFormat