Saltar al contenido

Cómo convertir minutos a horas y minutos (hh: mm) en java

Hacemos una verificación exhaustiva cada una de las noticias de nuestro sitio web con el objetivo de enseñarte en todo momento información más veraz y certera.

Solución:

Si tu tiempo está en una variable llamada t

int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);

no podría ser más fácil

tl; dr

Duration.ofMinutes( 260L )
        .toString()

PT4H20M

… o …

LocalTime.MIN.plus( 
    Duration.ofMinutes( 260L ) 
).toString()

04:20

Duration

Las clases java.time incluyen un par de clases para representar lapsos de tiempo. los Duration la clase es para horas-minutos-segundos, y Period es para años-meses-días.

Duration d = Duration.ofMinutes( 260L );

Duration partes

Accede a cada parte del Duration llamando to…Part. Estos métodos se agregaron en Java 9 y versiones posteriores.

long days = d.toDaysPart() ;
int hours = d.toHoursPart() ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
int nanos = d.toNanosPart() ;

A continuación, puede montar su propio string de esas partes.

ISO 8601

El estándar ISO 8601 define formatos de texto para valores de fecha y hora. Para períodos de tiempo no vinculados a la línea de tiempo, el formato estándar es PnYnMnDTnHnMnS. los P marca el comienzo, y el T separa los años-mes-días de las horas-minutos-segundos. Entonces una hora y media es PT1H30M.

Las clases java.time usan formatos ISO 8601 por defecto para analizar y generar cadenas. los Duration y Period las clases usan este formato estándar particular. Así que simplemente llama toString.

String output = d.toString(); 

PT4H20M

Para un formato alternativo, cree su propio String en Java 9 y versiones posteriores (no en Java 8) con el Duration::to…Part métodos. O vea esta respuesta para usar expresiones regulares para manipular el formato ISO 8601 string.

LocalTime

Recomiendo encarecidamente utilizar el formato estándar ISO 8601 en lugar del formato de reloj extremadamente ambiguo y confuso de 04:20. Pero si insistes, puedes conseguir este efecto hackeando con el LocalTime clase. Esto funciona si su duración no supera las 24 horas.

LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();

04:20


Acerca de java.time

El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases reemplazan a las antiguas y problemáticas clases heredadas de fecha y hora, como java.util.Date, Calendar& SimpleDateFormat.

El proyecto Joda-Time, ahora en modo de mantenimiento, aconseja la migración a las clases java.time.

Para obtener más información, consulte el Tutorial de Oracle. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.

¿Dónde obtener las clases java.time?

  • Java SE 8 y SE 9 y después
    • Incorporado.
    • Parte de la API de Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y SE 7
    • Gran parte de la funcionalidad de java.time está adaptada a Java 6 y 7 en ThreeTen-Backport.
  • Androide
    • los TresDiezABP el proyecto se adapta ThreeTen-Backport (mencionado anteriormente) para Android específicamente.
    • Ver Cómo usar ThreeTenABP….

El proyecto ThreeTen-Extra amplía java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuartery más.

También puede utilizar la clase TimeUnit. podrías definir

private static final String FORMAT = "%02d:%02d:%02d";

puede tener un método como:

public static String parseTime(long milliseconds) 
      return String.format(FORMAT,
              TimeUnit.MILLISECONDS.toHours(milliseconds),
              TimeUnit.MILLISECONDS.toMinutes(milliseconds) - TimeUnit.HOURS.toMinutes(
              TimeUnit.MILLISECONDS.toHours(milliseconds)),
              TimeUnit.MILLISECONDS.toSeconds(milliseconds) - TimeUnit.MINUTES.toSeconds(
              TimeUnit.MILLISECONDS.toMinutes(milliseconds)));
   

Si estás contento con lo expuesto, tienes el poder dejar una crónica acerca de qué le añadirías a esta noticia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *