Я только что протестировал PeriodFormatterBuilder в рамках Joda Time. Когда я добавляю выходные данные недели к строителю, расчетное время является правильным. Но если недели не добавляется, что на самом деле то, что я хочу, строитель просто сбросив 7 дней:Joda Time PeriodFormatterBuilder
public class JodaTest {
public static void main(String[] args) {
// builder 1 (weeks inc.)
PeriodFormatterBuilder b1 = new PeriodFormatterBuilder();
b1.appendYears().appendSuffix(" year", " years");
b1.appendSeparator(" ");
b1.appendMonths().appendSuffix(" month", " months");
b1.appendSeparator(" ");
// appends weeks ...
b1.appendWeeks().appendSuffix(" week", " weeks");
b1.appendSeparator(" ");
b1.appendDays().appendSuffix(" day", " days");
b1.appendSeparator(" ");
b1.printZeroIfSupported().minimumPrintedDigits(2);
b1.appendHours().appendSuffix(" hour", " hours");
b1.appendSeparator(" ");
b1.appendMinutes().appendSuffix(" minutes");
b1.appendSeparator(" ");
b1.appendSeconds().appendSuffix(" seconds");
PeriodFormatter f1 = b1.toFormatter();
// builder 2 (weeks not inc.)
PeriodFormatterBuilder b2 = new PeriodFormatterBuilder();
b2.appendYears().appendSuffix(" year", " years");
b2.appendSeparator(" ");
b2.appendMonths().appendSuffix(" month", " months");
b2.appendSeparator(" ");
// does not append weeks ...
b2.appendDays().appendSuffix(" day", " days");
b2.appendSeparator(" ");
b2.printZeroIfSupported().minimumPrintedDigits(2);
b2.appendHours().appendSuffix(" hour", " hours");
b2.appendSeparator(" ");
b2.appendMinutes().appendSuffix(" minutes");
b2.appendSeparator(" ");
b2.appendSeconds().appendSuffix(" seconds");
PeriodFormatter f2 = b2.toFormatter();
Period period = new Period(new Date().getTime(), new DateTime(2014, 12, 25, 0, 0).getMillis());
System.out.println(f1.print(period));
System.out.println(f2.print(period)); // 7 days missing?
}
}
распечатывает:
1 month 1 week 2 days 09 hours 56 minutes 21 seconds
1 month 2 days 09 hours 56 minutes 21 seconds
Во второй строке значение дня должно быть «9 дней». Как заставить строителя суммировать правильные дневные значения?
Хотя это обещание, это исключает меня: IllegalArgumentException: Период не поддерживает поле «недели». – Suma
@ Сьюма справа. Предложение исправлено. – RealSkeptic