根据时间值将基于100的整数限制为60的巧妙方法? (例如,一分钟内60秒)

时间:2012-10-14 01:43:18

标签: java

我需要以HHMMSS的格式存储整数的时间值。这个时间值每秒递增一次(基本上是一个自定义时钟)。然而,由于整数自然是基于10,我必须实现一个大的繁琐的逻辑,提取每个数字并在一分钟内检查60秒,一小时60分钟和一天24小时。我想知道是否有一些聪明的方法可以做到这一点,没有一个巨大的if / else if chunk。

2 个答案:

答案 0 :(得分:2)

您可以使用modulus operator选出单秒计数器的每个组件:

int totalSeconds;
...
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = (totalSeconds / 3600);

然后你可以只增加一个秒计数器并提取每个组件。

答案 1 :(得分:1)

我的建议是实现一个CustomClock类,它看起来像:

public class CustomClock {
    private int hour;
    private int minute;
    private int second;

    public CustomClock(int hour, int minute, int second) {
        this.hour = hour;
        // ...
    }

    public void increment() {
        second = second + 1)%60;
        if (second == 0) minute = (minute + 1)%60;
        if (minute == 0) hour = (hour + 1)%24;
    }
}

因此利用mod运算符(%)来计算任意基数。