Я пытаюсь построить секундомер с сотней секундной точности. У меня есть этот код, который выполняется каждые 10 миллисекунд, но у меня возникают проблемы при преобразовании его в формат 0 (мин): 0 (se c): 00.
timer.post(new Runnable() {
@Override
public void run() {
time += 1;
txtView.setText(convertTimeToText(time));
timer.postDelayed(this, 10);
}
});
private String convertTimeToText(int time) {
String convertedTime = time / 6000 + ":" + (time / 100) % 60
+ ":" + (time / 10) % 10 + time % 10;
return convertedTime;
}
Мне нужна помощь с convertTimeToText ( int time) {}, который форматирует время.
EDIT: Спасибо Ole VV и W JS за форматирование ответа и за то, как исправить задержку, которую я имел, это код, который я придумал, если кто-нибудь это нужно, пока это работает хорошо, возможно использование System.nanoTime () даст вам более точные результаты, но для моего использования это хорошо.
public void start(){
final long timeMillisWhenStarted = System.currentTimeMillis();
if(!isRunning){
isRunning = true;
timer.post(new Runnable() {
@Override
public void run() {
long millisNow = System.currentTimeMillis();
long time = millisNow - timeMillisWhenStarted;
yourtxtView.setText(convertTimeToText(time));
timer.postDelayed(this, 10);
}
});
}
}
private String convertTimeToText(long time){
long hundredths = time / 10;
long sec = hundredths / 100;
long min = sec / 60;
return String.format("%02d:%02d.%02d", min % 60, sec % 60, hundredths % 100);
}