倒计时倒数计数器

Countdown Reverse Counter

更新

已解决。我所做的是:-

sec = (time/1000)%60;

            if (sec == 0){
                min++;
                if (min > 59){
                    min = 0;
                    hour++;
                }

然后设置 min = -1 这样初始的 0 就不会将 min 添加到定时器。


我需要一个从 0 开始到无限时间的计数器,直到用户选择一个选项。

所以,我所做的是用一些逻辑实现一个 CountDownTimer,这样我就可以实现我想要的。

因此,我将 6 小时作为最长时间,直到计时器继续运行。 但我遇到的问题是,一旦秒数达到 59,然后它会在我编程时重置为 0,但随后它保持为 0,并且最小值开始按秒增加。请帮忙

这是我的代码:-

public void newCountTimer(){
    countdowntimer = new CountDownTimer(21600000,1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            long time = 21600000 - millisUntilFinished;
            sec = time/1000;
            if (sec > 59){
                sec = 0;
                min++;
                if (min > 59){
                    min = 0;
                    hour++;
                }
            }
            if (sec < 10) {
                if (min < 10) {
                    if (hour < 10) {
                        timer_box.setText("0" + hour + ":0" + min + ":0" + sec);
                    } else {
                        timer_box.setText("" + hour + ":0" + min + ":0" + sec);
                    }
                } else {
                    if (hour < 10) {
                        timer_box.setText("0" + hour + ":" + min + ":0" + sec);
                    } else {
                        timer_box.setText("" + hour + ":" + min + ":0" + sec);
                    }
                }
            } else {
                if (min < 10) {
                    if (hour < 10) {
                        timer_box.setText("0" + hour + ":0" + min + ":" + sec);
                    } else {
                        timer_box.setText("" + hour + ":0" + min + ":" + sec);
                    }
                } else {
                    if (hour < 10) {
                        timer_box.setText("0" + hour + ":" + min + ":" + sec);
                    } else {
                        timer_box.setText("" + hour + ":" + min + ":" + sec);
                    }
                }
            }
        }

        @Override
        public void onFinish() {

        }
    }.start();
}

问题是你的sec变量总是越来越高

 sec = time/1000;
            if (sec > 59){

所以秒将从 59 到 60 再到 61 再到 62 等等,因此总是大于 59。总是增加导致 min 在 1 分钟后总是增加

我的建议是在您的 sec 计算中添加 mod 60

  sec = (time/1000)%60;
            if (sec == 0){
                min++; 
   ...