Получи только часы и минуты Java - PullRequest
0 голосов
/ 24 апреля 2020

У меня проблема. Мне нужно рассчитать только часы и минуты, а не дни

import java.util.concurrent.TimeUnit;

public class TimeUtils {
    public static String millisecondToFullTime(long millisecond) {
        return timeUnitToFullTime(millisecond, TimeUnit.MILLISECONDS);
    }

    public static String secondToFullTime(long second) {
        return timeUnitToFullTime(second, TimeUnit.SECONDS);
    }

    public static String minutesToFullTime(long minutes) {
        return timeUnitToFullTime(minutes, TimeUnit.MINUTES);
    }

    public static String timeUnitToFullTime(long time, TimeUnit timeUnit) {
        long day = timeUnit.toDays(time);
        long hour = timeUnit.toHours(time) % 24;
        long minute = timeUnit.toMinutes(time) % 60;
        long second = timeUnit.toSeconds(time) % 60;


        if (day > 0) {
            return String.format("%d day %02d:%02d:%02d", day, hour, minute, second);
        } else if (hour > 0) {
            return String.format("%d:%02d:%02d", hour, minute, second);
        } else if (minute > 0) {
            return String.format("%d:%02d", minute, second);
        } else {
            return String.format("%02d", second);
        }
    }
}

Как этот код может вычислять только часы и минуты в java? Прямо сейчас я получаю результат в часах и минутах. Некоторые функции возвращают millisecondToFullTime, а некоторые возвращают минуты в полное время. Если я закомментирую день, если предложение будет вычислено неправильно.

Если аргумент эквивалентен 1 дню 5 часов 30 минут, он должен вернуть 29:30:00.

1 Ответ

2 голосов
/ 24 апреля 2020

Вам необходимо удалить операцию модуля из long hour = timeUnit.toHours(time) % 24;, так как она будет рассчитывать время в часах и удалять все, что относится к дню. Ваш метод будет выглядеть следующим образом:

public static String timeUnitToFullTime(long time, TimeUnit timeUnit) {
    long hour = timeUnit.toHours(time);
    long minute = timeUnit.toMinutes(time) % 60;
    long second = timeUnit.toSeconds(time) % 60;

    if (hour > 0) {
        return String.format("%d:%02d:%02d", hour, minute, second);
    } else if (minute > 0) {
        return String.format("%d:%02d", minute, second);
    } else {
        return String.format("%02d", second);
    }
}
...