Как отформатировать ZoneDateTime в Java 8? - PullRequest
0 голосов
/ 07 августа 2020

Я хочу отформатировать текущую дату в каком-то формате.

Формат: 20200807 | 12: 44: 55.000

Но при использовании следующего кода печатается только до секунд. Я хочу печатать до миллисекунд.

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss");
String formattedString1 = ZonedDateTime.now().format(formatter1);
System.out.println(formattedString1);

Ответы [ 3 ]

3 голосов
/ 07 августа 2020

Вы можете в основном расширить шаблон String, который вы используете, он в настоящее время (и, очевидно) форматирует только единицы времени до секунд (HH:mm:ss ⇒ часов, минут и секунд).

Сделайте это "yyyyMMdd|HH:mm:ss.SSS", чтобы иметь долю секунды,

public static void main(String[] args) {
    DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");
    String formattedString1 = ZonedDateTime.now().format(formatter1);
    System.out.println(formattedString1);
}

, это выведет String в следующей форме:

20200807|10:57:17.547

Если вам нужны миллисекунды дня ( в любом случае), вы можете использовать один A вместо этих трех S.

Взгляните на JavaDocs java.time.DateTimeFormatter для шаблонных букв и их значений.

Вот небольшой отрывок:

   ...
   H       hour-of-day (0-23)          number            0
   m       minute-of-hour              number            30
   s       second-of-minute            number            55
   S       fraction-of-second          fraction          978
   A       milli-of-day                number            1234
   n       nano-of-second              number            987654321
   N       nano-of-day                 number            1234000000
   ...
2 голосов
/ 07 августа 2020

Измените шаблон, чтобы включить миллисекунды.

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");
String formattedString1 = ZonedDateTime.now().format(formatter1);
System.out.println(formattedString1);
1 голос
/ 07 августа 2020

В вашем коде вы не учитываете миллисекунды в шаблоне. Поэтому вам необходимо обновить свой шаблон, как показано ниже:

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");

Для получения дополнительной информации вы можете обратиться к JavaDo c.

...