#java #time
#java #время
Вопрос:
Я хочу преобразовать количество времени из миллисекунд в удобочитаемую строку.
Например:
3,600,000
должно отображаться как 1:00:00
(1 час).
Существует ли существующая библиотека или класс в Java, которые могут это сделать?
Ответ №1:
Начиная с 1.5 существует java.util.concurrent.Класс TimeUnit, используйте его следующим образом:
String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(millis),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);
Для версий ниже 1.5 вы должны использовать
int seconds = (int) (milliseconds / 1000) % 60 ;
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours = (int) ((milliseconds / (1000*60*60)) % 24);
Комментарии:
1. Добавьте нулевую проверку для приведенного ниже кода версии 1.5. Но с использованием java.util.concurrent. Класс TimeUnit действительно не нужен.
2. Я думаю, что я не понял. В вашем первом примере, если минуты равны 0, я не хочу их отображать. есть ли программа форматирования, которая это сделает?
3. Ну, в соответствии с вашими требованиями вам нужно второе решение с нулевой проверкой. Первый будет форматировать и печатать значение min и sec, даже если значение равно нулю. Например, 1:00:00. Но вы сказали, что они вам не нужны
4. Первый — это форматировщик строк, где java.util.concurrent. Класс TimeUnit используется для преобразования миллиметров