Подтвердить что ты не робот

Время в Джоде, период до общего миллиса

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

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

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