milisekundy do dni

Poszperałem trochę, ale nadal nie mogę znaleźć dni... Oto co mam:

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

Proszę o pomoc, jestem do bani z matmy, Dziękuję.

Author: Reacen, 2011-10-20

4 answers

Jeśli nie masz innego przedziału czasu większego niż Dni:

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

Jeśli ty też masz tygodnie:

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

Najlepiej jest unikać używania miesięcy i lat, jeśli to możliwe, ponieważ nie mają one ściśle określonej długości. Ściśle mówiąc, dni też nie: czas letni oznacza, że dni mogą mieć długość, która nie wynosi 24 godzin.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-21 10:10:26

W prostych przypadkach, jak to, TimeUnit powinny być używane. Użycie TimeUnit jest nieco bardziej wyraźne na temat tego, co jest reprezentowane, a także jest znacznie łatwiejsze do odczytu i zapisu w porównaniu do wykonywania wszystkich obliczeń arytmetycznych jawnie. Na przykład, aby obliczyć liczbę dni z milisekund, będzie działać następujące polecenie:

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

W przypadkach bardziej zaawansowanych, gdzie czas trwania musi być bardziej drobnoziarnisty w kontekście pracy z czasem, wszystko należy używać obejmującego i nowoczesnego API daty/czasu. Dla JDK8+, java.czas jest teraz uwzględniony (oto tutoriale i javadocs ). Dla wcześniejszych wersji Javy Joda-time jest solidną alternatywą.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
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/doraprojects.net/template/agent.layouts/content.php on line 54
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;

Możesz rzucić int ale polecam użycie 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-06 19:12:47