Как отобразить количество времени для пользователя?

#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 используется для преобразования миллиметров