真夜中からLocalTime、特定の期間の長さのステップで s を 1 日の終わりまで反復したいと考えています。
例えば。期間が8hr10Minutesの場合、0:00、8:10、16:20(翌日なので24:30ではありません)
1 日未満の期間の次の作業コードがあります。より良い(特に読みやすい)ロジックはありますか?
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
}
また、上記は 1 日の倍数に等しい期間 (無限ループ) で失敗するか、または 1 日よりも長い場合は、期間が 1 日より短くキャストされたかのように数値を返します (たとえば、24hr10min は 10Minutes と同じように動作します)。 )、したがって、それが同時に(明示的なifs なしで)修正できる場合は、それも使用します。