2012-01-18 26 views
8

Necesito convertir minutes (definido como Entero) en el siguiente formato de cadena "hh: mm" suponiendo que el startTime es "00:00". El código dado a continuación es lo que tengo hasta ahora, pero no funciona correctamente. Tampoco se tiene en cuenta que el newTime se debe desplazar de acuerdo con startTime. hay alguna otra solucion?Convierta minutos enteros en Cadena "hh: mm"

String startTime = "00:00"; 
int minutes = 120; 
double time = minutes/60; 
String timeS = Double.toString(time); 
String[] hourMin = timeS.split("."); 
String h = hourMin[0]; 
String m = hourMin[1]; 
String newTime = "";  
newTime.concat(h+":"+m); 
+0

Use JodaTime. ¡Hace que el trabajo de fecha/hora realmente funcione! – cdeszaq

+0

¿Podría darnos algún ejemplo? –

+0

probablemente debería agregar la etiqueta 'tarea' –

Respuesta

6
String startTime = "00:00"; 
int minutes = 120; 
int h = minutes/60 + Integer.parseInt(startTime.substring(0,1)); 
int m = minutes % 60 + Integer.parseInt(startTime.substring(3,4)); 
String newtime = h+":"+m; 
+1

int h = minutes/60 + Integer.valueOf (startTime.substring (0,1)); –

+1

¿Cómo puedo obtener la salida "02:00"? Ahora es "2: 0". –

+2

Puede usar String.format, p. Ej. String.format ("% 02d", horas). – apines

1

Escribí esto recientemente para convertir segundos a horas, minutos y segundos; adaptarlo como lo desee (reemplace "s", "m", "h" con dos puntos, omita segundos, etc.).

Editar: corregir errores estúpidos en mi código después de tratar de mejorarlo a toda prisa.

private static String getFormattedTime(int secs) { 
    // int secs = (int) Math.round((double) milliseconds/1000); // for millisecs arg instead of secs 
    if (secs < 60) 
     return secs + "s"; 
    else { 
     int mins = (int) secs/60; 
     int remainderSecs = secs - (mins * 60); 
     if (mins < 60) { 
      return (mins < 10 ? "0" : "") + mins + "m " 
        + (remainderSecs < 10 ? "0" : "") + remainderSecs + "s"; 
     } 
     else { 
      int hours = (int) mins/60; 
      int remainderMins = mins - (hours * 60); 
      return (hours < 10 ? "0" : "") + hours + "h " 
        + (remainderMins < 10 ? "0" : "") + remainderMins + "m " 
        + (remainderSecs < 10 ? "0" : "") + remainderSecs + "s"; 
     } 
    } 
} 
20

Aquí van:

int min = 125; 

long hours = TimeUnit.MINUTES.toHours(120); 
long remainMinute = min - TimeUnit.HOURS.toMinutes(hours); 
String result = String.format("%02d", hours) + ":" 
        + String.format("%02d", remainMinute); 
System.out.println(result); 


/*Output: 02:05 */ 
+2

' TimeUnit' es el camino a seguir, no más conversión manual. – matsev

+5

Incluso podría acortarlo a: 'String.format ("% 02d:% 02d ", hours, remainMinutes);' – membersound

+0

para convertir cadenas en minutos http://stackoverflow.com/questions/8909075/convert-time-field -hm-into-integer-field-minutes-in-java – amorenew

0
String startTime = "00:00"; 
int minutes = 120; 

//--- counting 
int hour = minutes/60; 
minutes=minutes-hours*60; 
String m = Integer.toString(minutes); 
String h = Integer.toString(hours); 
newTime=h+":"+m; 
0
int ALLTIME_IN_MINUTES = 1444 
int hour = ALLTIME_IN_MINUTES /60; 
      int min = ALLTIME_IN_MINUTES %60; 


      String dateStr = hour+":"+min; 
      SimpleDateFormat curFormater = new SimpleDateFormat("H:m"); 
      Date dateObj = curFormater.parse(dateStr); 
      SimpleDateFormat postFormater = new SimpleDateFormat("HH:mm"); 

      String newDateStr = postFormater.format(dateObj); 

RESULTADO: 24:04

-2
int minutes = 129; 
double hoursAndMinutes = (minutes/60) 
     + (double) minutes % 60/100; 
String hoursAndMinutesStr = new DecimalFormat("0.00").format(hoursAndMinutes).replace('.', ':'); 
System.out.println(hoursAndMinutesStr); 
+0

Si bien técnicamente el resultado es correcto (porque 60 <100), esta es la forma incorrecta de abordar este tipo de tareas. La división es lógica (una hora tiene 60 minutos), no matemática. Los minutos no son "fracciones de una hora". –

+1

Además, no agregue las respuestas a las preguntas con muchas respuestas correctas que ya han sido aceptadas. –

0

la respuesta de apines es buena, pero si desea eliminar la advertencia en Android, agregue 'Configuración regional':

int hours = 3; 
int minutes = 6; 
private static final String TIME_SEPARATOR = ":"; 
String.format(Locale.getDefault(), "%02d"+TIME_SEPARATOR+"%02d", hours, minutes); 
Cuestiones relacionadas