0

我有问题。我只需要计算小时和分钟,而不是天

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中只计算小时和分钟?现在我在几小时和几分钟内得到结果。一些函数返回毫秒到全时间,一些函数返回分钟到完整时间。如果我注释掉 day if 子句,它将无法正确计算。

如果参数等于 1 天 5 小时 30 分钟,它应该返回29:30:00.

4

1 回答 1

2

您需要从中删除模块操作,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);
    }
}
于 2020-04-24T11:10:35.030 回答