我在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
小时:TimeUnit.MILLISECONDS.toHours(毫秒),
9000000毫秒到小时是:2.5小时
到此为止,它将显示:02:00:00 好的,我明白了
分钟:TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
我已经转变并提取了:
TimeUnit.MILLISECONDS.toMinutes(millis)= 150
TimeUnit.MILLISECONDS.toHours(millis)= 2,5
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))= 150
150-150 = 0,我不应该有等于30的东西吗?
秒:TimeUnit.MILLISECONDS.toSeconds(millis)-TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
同样的,它会给我0
这是如何工作的?谢谢 }
答案 0 :(得分: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))