Время Йода, Период до общего миллис - PullRequest
22 голосов
/ 09 марта 2012

Я пытаюсь получить общее количество миллисекунд ( не поле миллисекунд) из экземпляра объекта Period. Я перепробовал несколько конверсий, так как я не мог найти какой-либо метод, который бы легко его дал.

Кто-нибудь когда-нибудь нуждался в этом и сумел получить его?

(мне нужно это для моего патча, чтобы определить отрицательный период; отрицательный миллис = отрицательный период.)

Ответы [ 2 ]

16 голосов
/ 09 марта 2012

Вы не можете получить миллис непосредственно из Period, так как поля, такие как месяцы и годы, являются переменными в терминах миллисекунд.

Для того, чтобы эта работа работала, вам необходимо указать "базовый уровень""момент, с которого Period может вычислить фактическую длительность в миллисекундах.

Например, методы Period.toDurationFrom и Period.toDurationTo берут такой базовый момент и вычисляют объект Duration, который затем можнополучить миллис.

Javadoc для toDurationFrom говорит:

Получает общую длительность в миллисекундах этого периода относительно момента запуска.Этот метод добавляет период к указанному моменту для вычисления продолжительности.

Момент должен быть предоставлен, поскольку продолжительность периода изменяется.Например, период в 1 месяц может варьироваться между эквивалентными 28 и 31 днями в миллисекундах из-за разной продолжительности месяцев.Точно так же день может меняться в зависимости от перехода на летнее время, как правило, между 23 и 25 часами.

Поэтому вам нужно выбрать подходящий базовый момент для вашего приложения.

2 голосов
/ 03 октября 2014

Если вы хотите получить миллисис в определенное время , это можно сделать с помощью методов plus () или minus () класса DateTime.

например. получая миллис от сейчас

 DateTime start = new DateTime();  //NOW
 DateTime end = start.plus(<your period>);
 long millis = end.getMillis() - start.getMillis();
...