Вам нужно нормализовать период, потому что если вы построите его с общим количеством секунд, то это единственное значение, которое оно имеет. Нормализация разбивает его на общее количество дней, минут, секунд и т. Д.
Редактировать ripper234 - Добавление TL; версия DR : PeriodFormat.getDefault () .print (period)
Например:
public static void main(String[] args) {
PeriodFormatter daysHoursMinutes = new PeriodFormatterBuilder()
.appendDays()
.appendSuffix(" day", " days")
.appendSeparator(" and ")
.appendMinutes()
.appendSuffix(" minute", " minutes")
.appendSeparator(" and ")
.appendSeconds()
.appendSuffix(" second", " seconds")
.toFormatter();
Period period = new Period(72, 24, 12, 0);
System.out.println(daysHoursMinutes.print(period));
System.out.println(daysHoursMinutes.print(period.normalizedStandard()));
}
Будет печатать:
24 minutes and 12 seconds
3 days and 24 minutes and 12 seconds
Таким образом, вы можете увидеть, что вывод для ненормализованного периода просто игнорирует количество часов (он не преобразовывал 72 часа в 3 дня ).
Period period = new Period();
// prints 00:00:00
System.out.println(String.format("%02d:%02d:%02d", period.getHours(), period.getMinutes(), period.getSeconds()));
period = period.plusSeconds(60 * 60 * 12);
// prints 00:00:43200
System.out.println(String.format("%02d:%02d:%02d", period.getHours(), period.getMinutes(), period.getSeconds()));
period = period.normalizedStandard();
// prints 12:00:00
System.out.println(String.format("%02d:%02d:%02d", period.getHours(), period.getMinutes(), period.getSeconds()));