首页 > 解决方案 > 寻找 Java 格式的时间工具

问题描述

我正在寻找一个用于java的时间工具,我可以在其中给出一个以秒或milis为单位的时间,它会以例如方法返回,getSeconds因此getMinutes我可以轻松地将文本格式化为Remaining 1 day 2 hours 3 minutes and 4 seconds. 有人知道吗?

标签: javatimeformattingtimestamp

解决方案


一分钟有 60 秒,一小时有 60 分钟,一天有 24 小时,所以:

private static final int SECONDS_IN_MINUTE = 60;
private static final int SECONDS_IN_HOUR = 60 * SECONDS_IN_MINUTE;
private static final int SECONDS_IN_DAY = 24 * SECONDS_IN_HOUR;

然后你只需要继续划分:

class RemainingTime {
    private static final int SECONDS_IN_MINUTE = 60;
    private static final int SECONDS_IN_HOUR = 60 * SECONDS_IN_MINUTE;
    private static final int SECONDS_IN_DAY = 24 * SECONDS_IN_HOUR;

    private int totalSeconds, days, hours, minutes, seconds;

    public RemainingTime(int totalSeconds) {
        this.totalSeconds = totalSeconds;
        init();
    }

    private void init() {
        int remainingSeconds = totalSeconds;
        days = remainingSeconds / SECONDS_IN_DAY;

        remainingSeconds -= days * SECONDS_IN_DAY;
        hours = remainingSeconds / SECONDS_IN_HOUR;

        remainingSeconds -= hours * SECONDS_IN_HOUR;
        minutes = remainingSeconds / SECONDS_IN_MINUTE;

        remainingSeconds -= minutes * SECONDS_IN_MINUTE;
        seconds = remainingSeconds;
    }

    public int getDays() { return days; }
    public int getHours() { return hours; }
    public int getMinutes() { return minutes; }
    public int getSeconds() { return seconds; }
}

你像这样使用它:

RemainingTime rt = new RemainingTime(274119);

System.out.println(String.format(
        "Remaining %s day(s), %s hour(s), %s minute(s) and %s second(s)",
        rt.getDays(), rt.getHours(), rt.getMinutes(), rt.getSeconds()));

输出:

Remaining 3 day(s), 4 hour(s), 8 minute(s) and 39 second(s)

推荐阅读