2012-09-17 33 views
5

Necesito formatear segundos y minutos de milisegundos. Estoy usando countdownTimer. ¿alguien tiene sugestiones? Miré el tiempo joda. Pero todo lo que necesito es un formato, así que tengo 1:05 y no 1: 5. graciasFormateo de segundos y minutos

private void walk() { 
    new CountDownTimer(15000, 1000) { 
     @Override 
     public void onFinish() { 
      lapCounter++; 
      lapNumber.setText("Lap Number: " + lapCounter); 
      run(); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      text.setText("Time left:" + millisUntilFinished/1000); 
     } 
    }.start(); 
} 
+0

¿Ha mirado en SimpleNumberFormat? Alternativamente, siempre puede agregar un '0' a la izquierda de su número entero si es menor que 10. – BlackVegetable

+0

No estoy seguro si satisfará todas sus necesidades, pero podría valer la pena verlo [PrettyTime] (http://ocpsoft.org/prettytime/) – MadProgrammer

Respuesta

26

que podría hacerlo usando las clases de formato de fecha estándar, pero eso podría ser un poco pesado. Solo usaría el método String.format. Por ejemplo:

int minutes = time/(60 * 1000); 
int seconds = (time/1000) % 60; 
String str = String.format("%d:%02d", minutes, seconds); 
+0

¡Genial! eso fue exactamente lo que estaba buscando! No estoy seguro de entender el "% d:% 02d" Probé esto por mi cuenta y no lo hice bien. ¡Gracias! –

+1

% señala un reemplazo, 0 significa cero-pad el número, 2 significa que el ancho 2, yd significa que se visualiza como un número decimal. Aquí está la documentación: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html –

6

una manera real perezoso de hacer esto, siempre y cuando usted sabe que no tendrá más de 60 minutos es hacer sólo una fecha y utilizar SimpleDateFormat

public void onTick(long millisUntilFinished) { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("mm:ss"); 
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
    Date date = new Date(millisUntilFinished); 
    text.setText("Time left:" + dateFormat.format(date)); 
} 
0

Utilicé la clase Apache Commons StopWatch. La salida predeterminada de su método toString es similar a ISO8601, horas: minutos: segundos.milliseconds.

Example of Apache StopWatch

2

que haría uso de

org.apache.commons.lang.time.DurationFormatUtils.formatDuration(millisUntilFinished, "mm:ss") 
Cuestiones relacionadas