DateFormat без миллисекунд - PullRequest
       4

DateFormat без миллисекунд

2 голосов
/ 27 января 2009

Вероятно, это простой вопрос, но я не могу найти решение.

У меня есть строка времени длиной 8 цифр (секунд эпох), когда я пытаюсь отформатировать ее с помощью Java DateFormat, она всегда предполагает, что мое время также содержит миллисекунды 16315118 преобразуется в: 4: 31: 55.118 вместо правильного времени 19: 58: 38.

Я не хочу редактировать строку для добавления в миллисекундах, так как я могу это сделать?

Я также не хочу умножать на 1000, поскольку я использую это для форматирования других времен, включая миллисекунды.

Ответы [ 5 ]

2 голосов
/ 27 января 2009

я тоже не хочу умножать на 1000 так как я использую это для форматирования других времен, которые включают в себя миллисекунды.

Тебе не повезло. Вы не можете использовать один и тот же DateFormat для форматирования двух разных значений времени. Либо используйте два разных средства форматирования, либо (более правильно) преобразуйте значения времени.

Ваши значения времени должны быть в миллисекундах, потому что именно этого ожидает API. Все остальное взломать

2 голосов
/ 27 января 2009

Дата Java - это миллисекунды с начала эпохи. Умножьте свое значение на 1000, прежде чем преобразовать его в дату. Затем вы можете настроить используемый вами формат даты, создав новый SimpleDateFormat с нужной вам строкой формата.

1 голос
/ 27 января 2009

умножить на 1000 и затем отрубить последние 4 символа строки?

0 голосов
/ 10 ноября 2016

ТЛ; др

Instant.ofEpochSecond( 16_315_118L );

1970-07-08T19: 58: 38Z

java.time

Вы используете проблемные старые классы, теперь устаревшие, вытесненные классами java.time.

Instant

Класс Instant представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифр десятичного знака) доля).

Статический метод ofEpochSecond преобразует длинное целое число секунд в дату-время.

Instant instant = Instant.ofEpochSecond( 16_315_118L );
System.out.println( "instant.toString(): " + instant );

1970-07-08T19: 58: 38Z

См. живой код в IdeOne.com .


О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar и & SimpleDateFormat.

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

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Где взять классы java.time?

  • Java SE 8 и SE 9 и более поздние
    • Встроенный.
    • Часть стандартного Java API с комплексной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и SE 7
    • Большая часть функциональности java.time перенесена в Java 6 & 7 в ThreeTen-Backport .
  • Android

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

0 голосов
/ 27 января 2009

Вы можете найти ответ от Javas API здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...