Java 这个倒计时代码是如何工作的?

Java 这个倒计时代码是如何工作的?,java,android,countdowntimer,Java,Android,Countdowntimer,我在stackoverflow上看过这段代码,但我不明白它是如何工作的,我感到很沮丧 new CountDownTimer(9000000, 1000) { public void onTick(long millisUntilFinished) { long millis = millisUntilFinished; String time = String.format("%

我在stackoverflow上看过这段代码,但我不明白它是如何工作的,我感到很沮丧

      new CountDownTimer(9000000, 1000) {

    public void onTick(long millisUntilFinished) {
                        long millis = millisUntilFinished;
                        String time = String.format("%02d:%02d:%02d", 

        // From here,, I don't understand what is "going on " 
        TimeUnit.MILLISECONDS.toHours(millis),
         TimeUnit.MILLISECONDS.toMinutes(millis)-
         TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

         TimeUnit.MILLISECONDS.toSeconds(millis)-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

        }
9000000毫秒是:02:30:00

小时:时间单位。毫秒。到小时(毫秒)

9000000毫秒到小时为:2,5小时

直到现在,它将显示:02:00:00 好的,我明白了

分钟:TimeUnit.millises.toMinutes(毫秒)-TimeUnit.HOURS.toMinutes(TimeUnit.millises.toHours(毫秒))

我已经转换并改变了:

时间单位。毫秒。分钟(毫秒)=150

时间单位毫秒到小时(毫秒)=2,5

TimeUnit.HOURS.toMinutes(TimeUnit.millises.toHours(millis))=150

150-150=0,我不应该有等于30的值吗

秒:时间单位。毫秒。到秒(毫秒)-时间单位。分钟。到秒(时间单位。毫秒。到分钟(毫秒))

同样的事情,它会给我0

这是怎么回事?非常感谢。
}尝试手动操作。首先计算出整整几个小时。然后从总毫秒数中减去整小时数(以毫秒为单位),并使用该结果计算整分钟数。您可以对秒执行相同的操作(但要获得秒数,只需减去整分钟就可以了,因为一小时中有整分钟,所以小时会自动处理)

也许虚拟变量会有帮助:

WholeHours =  TimeUnit.MILLISECONDS.toHours(millis)
WholeMinutes = TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
WholeSeconds = TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))

使用调试器。这个程序可以运行,我只是不明白它在做什么是的。使用调试器。逐行,一次一个,看看每一步都发生了什么…哦,对不起,在我对调试器进行研究之前,我不知道调试器是什么。谢谢,我会研究它的。非常感谢,我知道我的错误是什么,我现在没有取整数,这就是为什么当我计算它时,它给了我0,这让我非常困惑,非常感谢。