【问题标题】:Android:How to show Time Counter in Decimal FormatAndroid:如何以十进制格式显示时间计数器
【发布时间】:2013-09-11 09:21:14
【问题描述】:

这个问题可能会造成混淆,所以我在下面解释一下。

我已经创建了一个计数器来计算时间(比如人们工作了多少时间)。它可以很好地处理单个字符(比如 0:0:0),但我想以十进制显示它(比如 00:00 :00)。我试过下面的代码,但它的工作原理和以前一样。还没有改变。

  private void timer() {

    int locSec = 0;
    int locMin = 0;
    int locHr = 0;
    DecimalFormat format = new DecimalFormat("00");
    String formatSecond = format.format(locSec);
    String formatMinute = format.format(locMin);
    String formatHour = format.format(locHr);

    sec = Integer.parseInt(formatSecond);
    min = Integer.parseInt(formatMinute);
    hr = Integer.parseInt(formatHour);

    Timer T = new Timer();
    timeCounter = (TextView) findViewById(R.id.tvDisplayCountDown);
    T.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    timeCounter.setText("time= " + hr + ":"+ min + ":"+ sec);
                    sec++;
                    if(sec > 59){
                        sec = 0;
                        min = min + 1;                          
                    }
                }
            });
        }
    }, 1000, 1000);

}

其中 hr、min 和 sec 是 global variables and assigned as 0. 但是output is same as before: 0:0:0

帮助和建议很重要。

谢谢

【问题讨论】:

标签: java android timer decimalformat


【解决方案1】:

检查这里

假设formatSecond=01

    sec = Integer.parseInt(formatSecond); //this converts 01 to back 1 
    min = Integer.parseInt(formatMinute);
    hr = Integer.parseInt(formatHour);

非常简单

第一次更改为final DecimalFormat format = new DecimalFormat("00");

现在使用format.format(Double.valueOf(hr or min or sec))

所以你的代码应该是:

timeCounter.setText("time= " + format.format(Double.valueOf(hr)) + ":" 
+format.format(Double.valueOf(min)) + ":"
+ format.format(Double.valueOf(sec)));

输出:

time=00:01:05 // As you Required

我已经按照问题的要求进行了测试和工作

【讨论】:

  • @RanjitPati 很高兴它有帮助:)
【解决方案2】:

您可以使用以下代码:

    sec = Integer.parseInt(formatSecond);//eg:sec=5
    min = Integer.parseInt(formatMinute);//eg: min=9
    hr = Integer.parseInt(formatHour);//eg: hr=12

    System.out.format("%02d : %02d : %02d \n", hr,min,sec); //the output will be: 12 : 09 : 05

希望上面的代码sn-p已经满足你的要求了。

【讨论】:

  • 我使用了 d tarsem 的 1,但它也很好...+1 用于不同的想法...谢谢你
猜你喜欢
  • 1970-01-01
  • 2013-02-05
  • 2021-09-14
  • 1970-01-01
  • 2012-05-11
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多