Миллисекунды не отображаются в выходных данных DateFormat.format - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу получить строку даты и времени в формате "гггг-ММ-дд'ТХЧ: мм: сс.СССЗ". Я написал следующий фрагмент кода:

    Date date=Calendar.getInstance().getTime();
    String currentDateTimeString = (String) android.text.format.DateFormat.
           format("yyyy-MM-dd'T'HH:mm:ss.SSSZ",Calendar.getInstance().getTime());

, но я получаю строки типа

"2019-11-08T13:39:33.SSSZ"

также, когда формат "гггг-ММ-дд'Т'ХХ: мм: сс. SSS'Z '"(с экранированием Z).

Паттерны находятся в https://developer.android.com/reference/java/text/SimpleDateFormat.html#examples

Почему миллисекунды не отображаются?

1 Ответ

0 голосов
/ 08 ноября 2019

Я мало знаю о разработке под Android, но быстрый поиск в документации может дать вам ответ:

https://developer.android.com/reference/android/text/format/DateFormat

Методы форматирования в этом классе реализуют подмножествоЮникод UTS # 35 шаблонов. Подмножество, в настоящее время поддерживаемое этим классом, включает следующие символы формата: acdEHhLKkLMmsyz. До уровня API 17 поддерживалась только adEhkMmszy. Обратите внимание, что этот класс неправильно реализует k, как если бы он был H для обратной совместимости.

Unicode UTS # 35 ничего не говорит о миллисекундах: https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns

Так что кажется, что форматирование миллисекундне поддерживается.

Я бы лучше использовал стандартные классы Java LocalDateTime и DateTimeFormatter, которые поддерживают миллисекунды.

https://developer.android.com/reference/java/time/format/DateTimeFormatter.html

[Отредактировано]

Перечитав вопрос, я думаю, проблема в том, что вы используете DateFormat вместо SimpleDateFormat. Предоставленная вами ссылка не соответствует фактическому классу, который вы используете в своем коде.

...