【问题标题】:how to set timer in format HH:MM:SS to textview by difference time in android?如何在 android 中通过不同时间将 HH:MM:SS 格式的计时器设置为 textview?
【发布时间】:2014-05-14 11:19:21
【问题描述】:

我的当前日期格式为“2014-05-14T16:23:11.810Z”,计数器日期为“2014-05-15T16:24:13.810Z” "

我想在 TextView 中的 HH:MM:SS 即 24:01:02 中显示这些日期之间的计数器时间 连续更新 1 秒。喜欢计时器

但是如何计算这两个日期之间的差异并将其转换为HH:MM:SS

我编写了简单的代码,倒数计时器在 android 中以毫秒为单位显示:

CountDownTimer timer=new CountDownTimer(300000, 1000) {
        public void onTick(long millisUntilFinished) {
            txtNewBetTimer.setText(""+millisUntilFinished / 1000);
        }

        public void onFinish() {
            txtNewBetTimer.setText("Time Up");
        }
    };
    timer.start();

我想要这样的输出:

请任何人帮助我...

提前谢谢..

【问题讨论】:

标签: android datetime timer textview


【解决方案1】:
// try this way,hope this will help you...

CountDownTimer timer=new CountDownTimer(300000, 1000) {
   public void onTick(long millisUntilFinished) {
        txtNewBetTimer.setText(""+String.format("%d:%d:%d",
        TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
        toMinutes(millisUntilFinished))));
   }

   public void onFinish() {
        txtNewBetTimer.setText("Time Up");
   }
};
timer.start();

Alternative way

CountDownTimer timer=new CountDownTimer(300000, 1000) {
   public void onTick(long millisUntilFinished) {
         int seconds = (int) (millisUntilFinished / 1000) % 60 ;
         int minutes = (int) ((millisUntilFinished / (1000*60)) % 60);
         int hours   = (int) ((millisUntilFinished / (1000*60*60)) % 24);
         txtNewBetTimer.setText(String.format("%d:%d:%d",hours,minutes,seconds));
   }
   public void onFinish() {
         txtNewBetTimer.setText("Time Up");
   }
};
timer.start();    

【讨论】:

    【解决方案2】:
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    Date date = new Date(); 
    
    public void onTick(long millisUntilFinished) {
        date.setTime(millisUntilFinished);
        textView.setText(sdf.format(date));
    }
    

    【讨论】:

    • 我认为可能需要添加时间偏移量,例如 3 小时
    【解决方案3】:

    您可以自己编码或使用提供的实用方法DateUtils.formatElapsedTime()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多