segundos minutos milisegundos horas dias convertir convert java math time milliseconds

java - minutos - milisegundos a días



formula milisegundos a minutos (4)

Investigué un poco, pero aún no puedo encontrar la manera de obtener los días ... Esto es lo que obtuve:

int seconds = (int) (milliseconds / 1000) % 60 ; int minutes = (int) ((milliseconds / (1000*60)) % 60); int hours = (int) ((milliseconds / (1000*60*60)) % 24); int days = ????? ;

Por favor ayuda, apesta en matemáticas, gracias.


Para casos simples como este, se debe usar TimeUnit . El uso de TimeUnit es un poco más explícito sobre lo que se está representando y también es mucho más fácil de leer y escribir en comparación con hacer todos los cálculos aritméticos explícitamente. Por ejemplo, para calcular el número de días de milisegundos, la siguiente declaración funcionaría:

long days = TimeUnit.MILLISECONDS.toDays(milliseconds);

Para los casos más avanzados, donde las duraciones de grano más fino deben representarse en el contexto del trabajo con el tiempo, se debe utilizar una API de fecha / hora que lo abarque todo y moderna. Para JDK8 +, ahora se incluye java.time (aquí están los tutorials y javadocs ). Para versiones anteriores de Java joda-time es una alternativa sólida.


Si no tiene otro intervalo de tiempo mayor que días:

int days = (int) (milliseconds / (1000*60*60*24));

Si tienes semanas también:

int days = (int) ((milliseconds / (1000*60*60*24)) % 7); int weeks = (int) (milliseconds / (1000*60*60*24*7));

Probablemente sea mejor evitar usar meses y años si es posible, ya que no tienen una longitud fija bien definida. Estrictamente hablando, tampoco lo hacen los días: el horario de verano significa que los días pueden tener una duración que no es de 24 horas.


int days = (int) (milliseconds / 86 400 000 )


public static final long SECOND_IN_MILLIS = 1000; public static final long MINUTE_IN_MILLIS = SECOND_IN_MILLIS * 60; public static final long HOUR_IN_MILLIS = MINUTE_IN_MILLIS * 60; public static final long DAY_IN_MILLIS = HOUR_IN_MILLIS * 24; public static final long WEEK_IN_MILLIS = DAY_IN_MILLIS * 7;

Podrías lanzar int, pero yo recomendaría usar long .