milisegundos a días


Hice algunas investigaciones, pero todavía no puedo encontrar cómo conseguir los días... Esto es lo que tengo:

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, apesto en matemáticas, gracias.

Author: Reacen, 2011-10-20

4 answers

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

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

Si usted también tiene semanas:

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 duración fija bien definida. Estrictamente hablando, tampoco los días: el horario de verano significa que los días pueden tener una duración que no sea de 24 horas.

 83
Author: Mark Byers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-21 10:10:26

Para casos simples como este, se debe usar TimeUnit. El uso de TimeUnit es un poco más explícito sobre lo que se representa 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 a partir de milisegundos, la siguiente instrucción funcionaría:

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

Para los casos más avanzados, donde las duraciones más finas necesitan ser representadas en el contexto del trabajo con el tiempo, un todo debe usarse una API de fecha/hora moderna y abarcadora. Para JDK8+, java.ahora se incluye el tiempo (aquí están los tutoriales y javadocs). Para versiones anteriores de Java joda-time es una alternativa sólida.

 112
Author: whaley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-08 22:58:53
int days = (int) (milliseconds / 86 400 000 )
 1
Author: Kurtis Nusbaum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-30 22:31:37
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.

 1
Author: Codeversed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-06 19:12:47