繁体   English   中英

CountDownTimer Android

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM