String.format не предоставляет правильный формат для размеров более одного часа - PullRequest
1 голос
/ 04 августа 2020

Я хочу преобразовать 3600000 миллисекунд в формат 01:00:00 (означает 01 час: 00 минут: 00 секунд). К сожалению, это дает мне 2: 120: 00. Через 60 000 миллисекунд он дает мне 00:10:00, что является правильным результатом. До 00:59:00 он выводит числа в формате, но все, что больше часа, больше не выводит их в правильном формате

public static String formattedTime(long time) {
    int hours = (int) (time / 1000) / 60 / 60;
    int minutes = (int) (time / 1000) / 60;
    int seconds = (int) (time / 1000) % 60;
    return String.format(Locale.getDefault(), "%02d:%02d:%02d", hours, minutes, seconds);

}

1 Ответ

1 голос
/ 04 августа 2020

Сделайте следующее:

import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        // Tests
        System.out.println(formattedTime(3600000));
        System.out.println(formattedTime(4580000));
    }

    public static String formattedTime(long time) {
        // Convert time in milliseconds to seconds
        int milliToSec = (int) (time / 1000);

        // Get hours from total seconds
        int hours = milliToSec / 3600;

        // Get minutes from total seconds
        int minutes = (milliToSec / 60) % 60;

        // Get remaining seconds from total seconds
        int seconds = milliToSec % 60;

        // Return formatted string
        return String.format(Locale.getDefault(), "%02d:%02d:%02d", hours, minutes, seconds);
    }
}

Вывод:

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