【发布时间】:2013-12-16 16:15:50
【问题描述】:
我正在尝试使用 Android CountdownTimer 类和 Java Time 实现一个“日期”倒计时计时器,该计时器从当天、小时、分钟、秒到 2013 年 12 月 26 日上午 9:00 倒计时。以下是我的代码:
FestCountdownTimer timer = new FestCountdownTimer(00, 00, 9, 26, 12, 2013);
new CountDownTimer(timer.getIntervalMillis(), 1000) {
@Override
public void onTick(long millisUntilFinished) {
int days = (int) ((millisUntilFinished / 1000) / 86400);
int hours = (int) (((millisUntilFinished / 1000)
- (days * 86400)) / 3600);
int minutes = (int) (((millisUntilFinished / 1000)
- (days * 86400) - (hours * 3600)) / 60);
int seconds = (int) ((millisUntilFinished / 1000) % 60);
String countdown = String.format("%02dd %02dh %02dm %02ds", days,
hours, minutes, seconds);
countdownTimer.setText(countdown);
}
@Override
public void onFinish() {
countdownBegins.setVisibility(View.GONE);
countdownTimer.setText("IT'S HERE!");
}
}.start();
这是我的FestCountdownTimer 课程:
public class FestCountdownTimer {
private long intervalMillis;
public FestCountdownTimer(int second, int minute, int hour, int monthDay, int month, int year) {
Time futureTime = new Time();
// Set date to future time
futureTime.set(second, minute, hour, monthDay, month, year);
futureTime.normalize(true);
long futureMillis = futureTime.toMillis(true);
Time timeNow = new Time();
// Set date to current time
timeNow.setToNow();
timeNow.normalize(true);
long nowMillis = timeNow.toMillis(true);
// Subtract current milliseconds time from future milliseconds time to retrieve interval
intervalMillis = futureMillis - nowMillis;
}
public long getIntervalMillis() {
return intervalMillis;
}
}
现在小时、分钟和秒都可以了。只是天数即将到来 40。现在我将日期设置为本月 26 日,即 2013 年。所以目前 26 - 16 = 10 天。这应该大约是显示的天数。那为什么显示40?请帮忙。谢谢大家。
【问题讨论】:
标签: android date time countdowntimer