[英]CountDownTimer Android
我正在尝试倒数Android中的事件。 事件的日期和时间存储在数据库中,但是Countdown返回的天数超出了预期值。
这是尝试过的。
String EventDate="2013-12-26 15:00:00";
SimpleDateFormat FormatDate = new SimpleDateFormat("yyyy-MM-dd HH:mm",Locale.US);
FormatDate.setTimeZone(TimeZone.getTimeZone("GMT+1"));
try {
Date date = FormatDate.parse(mm);
} catch (Exception e) {
// TODO: handle exception
}
Long ToCount=date.getTime();
CountDownTimer cdt = new CountDownTimer(ToCount, 1000) {
public void onTick(long millisUntilFinished) {
EventTv.setText(""+ String.format(
"%d Days,%d Hours, %d min, %d sec",
TimeUnit.MILLISECONDS.toDays(millisUntilFinished),
TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))
));
}
public void onFinish() {
// TODO Auto-generated method stub
EventTv.setText("done");
}
}.start();
但是,如果我运行该应用程序,则TextView将显示(16059days,3875429hours,23125799min)
。
请帮助我知道我在做什么错吗?
问题出在
date.getTime()
它返回的时间是格林尼治标准时间1970年1月1日以来的毫秒数。
因此,要从当前时间获取毫秒数,您将需要使用
Date now = new Date();
Long ToCount = date.getTime() - now.getTime();
还要将millisUntilFinished转换为您要使用的相关格式
TimeUnit.MILLISECONDS.toDays(millisUntilFinished),
TimeUnit.MILLISECONDS.toHours(millisUntilFinished) -
TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(millisUntilFinished)),
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.