这个问题可能会引起混淆,所以我在下面解释。
我已经创建了一个计算时间的计数器(比如人们的工作时间)。它与单个字符(如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
帮助和建议值得注意。
谢谢
答案 0 :(得分: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
我已根据问题的要求进行测试和工作
答案 1 :(得分:1)
您可以使用以下代码:
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
我希望上面的代码段符合您的要求。