Я использую joda-time (1.6.2) в проекте, и одна из вещей, которые я делаю, это получение разницы между прогнозируемым временем и фактическим временем.Иногда это различие положительное, иногда отрицательное.Хотя подходящий подход может заключаться в использовании Duration
, а не Period
, использование PeriodFormatter
для отображения результата привело меня к вопросу о классе PeriodFormatterBuilder.В качестве примера:
DateTime d1 = new DateTime(2011, 6, 17, 13, 13, 5, 0) ;
DateTime d2 = new DateTime(2011, 6, 17, 10, 17, 3, 0) ;
Period negativePeriod = new Period(d1, d2);
Period positivePeriod = new Period(d2, d1);
PeriodFormatter pf = new PeriodFormatterBuilder()
.minimumPrintedDigits(2)
.appendHours()
.appendSuffix(":")
.rejectSignedValues(true) // Does this do anything?
.appendMinutes()
.appendSuffix(":")
.appendSeconds()
.toFormatter();
System.out.printf("Negative Period: %s\n", pf.print(negativePeriod));
System.out.printf("Positive Period: %s\n", pf.print(positivePeriod));
Вывод этого:
Negative Period: -02:-56:-02
Positive Period: 02:56:02
Я понимаю, что Period
хранит каждый компонент своей даты и времени отдельно, но для меня ожидаемыйПоведение метода .rejectSignedValues(true)
для построения Formatter
заключается в отображении знака -
только для первого элемента, например:
Negative Period: -02:56:02
Я неправильно понимаю API или это ошибка?JodaStephen?Кто-нибудь?
Работа с отображением того, что я хочу, не сложна, но мне просто любопытно подход Builder.
Спасибо,
-Manuel