Проблема в том, что вы не указываете тип периода в конструкторе периодов - поэтому он использует значение по умолчанию «годы, месяцы, недели, дни, часы, минуты, секунды и миллис».Вы видите только 15 минут, потому что вы не просите часы, которые вернут -18.
Если вам нужны только дни и минуты, вы должны указать следующее:
PeriodType type = PeriodType.forFields(new DurationFieldType[] {
DurationFieldType.days(),
DurationFieldType.minutes()
});
Period period = new Period(currentDate, date, type);
// Now you'll just have minutes and days
Важно понимать разницу между Duration
, который представляет собой «определенное количество миллисекунд, которое может быть получено в соответствии с различными единицами измерения», и Period
, который фактически является отображением из набора типов полей (минут, месяцевдней и т. д.) ценностям.В периоде нет единственного значения времени - это набор значений.