这个 CountDownTimer 代码是如何工作的?
How does this CountDownTimer code works?
我在 Whosebug 上看过这段代码,但我不明白它是如何工作的,我感到很沮丧
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(毫秒)- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(毫秒))
我已经转换并提取了:
TimeUnit.MILLISECONDS.toMinutes(毫秒)= 150
TimeUnit.MILLISECONDS.toHours(毫秒)= 2,5
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(毫秒)) = 150
150-150 = 0 ,我不应该有等于 30 的东西吗??
秒:TimeUnit.MILLISECONDS.toSeconds(毫秒)-TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(毫秒)));
同样的事情,它会给我 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))
我在 Whosebug 上看过这段代码,但我不明白它是如何工作的,我感到很沮丧
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(毫秒)- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(毫秒))
我已经转换并提取了:
TimeUnit.MILLISECONDS.toMinutes(毫秒)= 150
TimeUnit.MILLISECONDS.toHours(毫秒)= 2,5
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(毫秒)) = 150
150-150 = 0 ,我不应该有等于 30 的东西吗??
秒:TimeUnit.MILLISECONDS.toSeconds(毫秒)-TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(毫秒)));
同样的事情,它会给我 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))