Я хочу створити функцію, яка перетворить дні в мілісекунди. Формат днів зберігається як 0,2444, то як перетворити його в мілісекунди?
0.2444
що це означає?
Я хочу створити функцію, яка перетворить дні в мілісекунди. Формат днів зберігається як 0,2444, то як перетворити його в мілісекунди?
0.2444
що це означає?
Відповіді:
На мою думку, найкраща практика для цього:
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.
На додаток до інших відповідей, є ще клас TimeUnit, який дозволяє перетворити одну тривалість часу в іншу. Наприклад, щоб дізнатись, скільки мілісекунд складає один день:
TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS); //gives 86400000
Зверніть увагу, що цей метод займає значення long
, тому, якщо у вас є частка дня, вам доведеться помножити її на кількість мілісекунд за один день.
24 години = 86400 секунд = 86400000 мілісекунд. Просто помножте своє число на 86400000.
Важливо згадати, що раз на 4-5 років цей метод може давати помилку в 1 секунду, наприклад, високосної секунди ( http://www.nist.gov/pml/div688/leapseconds.cfm ) і правильну формулу бо цей день був би
(24*60*60 + 1) * 1000
Виникає запитання Чи задовольняє високосні секунди Календар? а відповідь - ні.
Тож, якщо ви розробляєте суперзалежне від часу програмне забезпечення, будьте обережні з цією формулою.
int day = 5;
long dayInMilliseconds = day * org.apache.commons.lang.time.DateUtils.MILLIS_PER_DAY
Ви можете використовувати цей клас корисності -
public class DateUtils
{
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;
}
Якщо ви працюєте над фреймворком Android, тоді просто import
він (також названий DateUtils
) підpackage android.text.format