Время Java 8: перебор дневного LocalTime шагами периодаJAVA

Программисты JAVA общаются здесь
Anonymous
Время Java 8: перебор дневного LocalTime шагами периода

Сообщение Anonymous »

Начиная с полуночи, я хочу перебирать LocalTime шагами определенной длины до конца дня.

Например. если период составляет 8 часов 10 минут, мне нужно время: 0:00, 8:10, 16:20 (а не 24:30, так как это следующий день)

У меня есть следующий рабочий код для периодов меньше одного дня. Есть ли лучшая (особенно более читабельная) логика?

Код: Выделить всё

Duration period = ...;
for(LocalTime t = LocalTime.MIDNIGHT, p = LocalTime.MIDNIGHT;
t.isAfter(p) || t.equals(p) ; p = t, t = t.plus(period)){
// do something with t
}
Кроме того, приведенное выше не работает для периодов, кратных одному дню (бесконечный цикл), или, если больше одного дня, возвращает число, как если бы период был приведен к быть короче одного дня (например, 24 часа 10 минут ведут себя так же, как 10 минут), поэтому, если это можно исправить одновременно (без явных if), я тоже возьму это.

Подробнее здесь: https://stackoverflow.com/questions/278 ... riod-steps

Вернуться в «JAVA»