Форматировать длительность в миллисекундах в часы, минуты и секунды

Научитесь преобразовывать заданную длительность в миллисекундах в часы, минуты и секунды, а также форматировать ее в ЧЧ:мм:сс или любой другой пользовательский шаблон.

1. Использование API продолжительности

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

Класс Duration моделирует количество или объем времени в секундах и наносекундах. Он предоставляет методы для других единиц времени, основанных на длительности, таких как toHours(), toMinutes() и getSeconds(). Мы можем использовать эти методы, чтобы получить время в определенной единице и получить остаток для извлечения точного количества.

long millis = 54321000;Duration duration = Duration.ofMillis(millis);long h = duration.toHours();long m = duration.toMinutes() % 60;long s = duration.getSeconds() % 60;String timeInHms = String.format("%02d:%02d:%02d", h, m, s);System.out.println(timeInHms); //15:05:21

2. DurationFormatUtils от Apache Common

Класс DurationFormatUtils предоставляет утилиты и константы форматирования. Его метод formatDuration(durationMillis, format) может использоваться для форматирования указанной длительности в указанном формате.

Он принимает необязательный третий параметр padWithZeros, который указывает, следует ли дополнять левую часть чисел нулями. Например, если мы хотим записать «5» в «05», то мы должны передать третий аргумент как true.

long millis = 54321000;String timeInHms = DurationFormatUtils.formatDuration(millis, "HH:mm:ss", true);System.out.println(timeInHms); //15:05:21//Without paddingtimeInHms = DurationFormatUtils.formatDuration(millis, "HH:mm:ss", false);System.out.println(timeInHms); //15:5:21

Чтобы использовать этот класс, включите последнюю версию commons-lang из репозитория Maven.

 <зависимость><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><версия>3.12.0</версия></зависимость>

3. Заключение

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

Исходный код на Github

Прокрутить вверх