Конвертировать из дней в миллисекунды - PullRequest
57 голосов
/ 08 августа 2011

Я хочу создать функцию, которая будет конвертировать дни в миллисекунды. Формат дней хранится как 0.2444, так как преобразовать это в миллисекунды?

Ответы [ 7 ]

216 голосов
/ 18 июня 2014

Лучшая практика для этого, на мой взгляд:

TimeUnit.DAYS.toMillis(1);     // 1 day to milliseconds.
TimeUnit.MINUTES.toMillis(23); // 23 minutes to milliseconds.
TimeUnit.HOURS.toMillis(4);    // 4 hours to milliseconds.
TimeUnit.SECONDS.toMillis(96); // 96 seconds to milliseconds.
104 голосов
/ 08 августа 2011

В дополнение к другим ответам, существует также класс TimeUnit , который позволяет преобразовывать одну временную длительность в другую.Например, чтобы узнать, сколько миллисекунд составляет один день:

TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS); //gives 86400000

Обратите внимание, что этот метод занимает long, поэтому, если у вас есть доля дня, вам придется умножить его наколичество миллисекунд в одном дне.

17 голосов
/ 08 августа 2011

Не будет days * 24 * 60 * 60 * 1000 достаточно?

10 голосов
/ 08 августа 2011

24 часа = 86400 секунд = 86400000 миллисекунд.Просто умножьте свой номер на 86400000.

9 голосов
/ 27 февраля 2013

Важно отметить, что один раз в 4-5 лет этот метод может давать 1-секундную ошибку, из-за високосной секунды (http://www.nist.gov/pml/div688/leapseconds.cfm), и правильная формула для этого дня будет

(24*60*60 + 1) * 1000

Есть вопрос Есть ли в Календаре дополнительные секунды? , а ответ - нет.

Так что, если вы разрабатываете программное обеспечение, зависящее от времени, будьте осторожны сэта формула.

3 голосов
/ 08 августа 2011
public static double toMilliSeconds(double day)
{
    return day * 24 * 60 * 60 * 1000;
}

или как long:

public static long toMilliSeconds(double day)
{
    return (long) (day * 24 * 60 * 60 * 1000);
}
0 голосов
/ 29 мая 2019
int day = 5;
long dayInMilliseconds = day * org.apache.commons.lang.time.DateUtils.MILLIS_PER_DAY
...