Sergio C.
03/04/2022, 4:57 PMclass TimeIterator(
startTime: LocalTime,
private val endTimeInclusive: LocalTime,
private val stepMinutes: Long,
) : Iterator<LocalTime> {
private var currentTime = startTime
override fun hasNext(): Boolean {
return currentTime <= endTimeInclusive
}
override fun next(): LocalTime {
val next = currentTime
currentTime = currentTime.plusMinutes(stepMinutes)
return next
}
}
zsmb
03/04/2022, 5:25 PMzsmb
03/04/2022, 5:25 PMstepMinutes = 0
Sergio C.
03/04/2022, 5:30 PMSergio C.
03/04/2022, 5:30 PMSergio C.
03/04/2022, 5:33 PMSergio C.
03/04/2022, 5:42 PMclass TimeIterator(
private var startTime: LocalTime,
private val endTimeInclusive: LocalTime,
private val stepMinutes: Long,
) : Iterator<LocalTime> {
private val zero = LocalTime.parse("00:00")
private var currentTime = startTime
private var stopNext = false
private var stopFirst = true
override fun hasNext(): Boolean {
return currentTime <= endTimeInclusive && stopNext.not()
}
override fun next(): LocalTime {
val next = currentTime
currentTime = currentTime.plusMinutes(stepMinutes)
if (next == zero) {
stopNext = true
if (startTime == zero && stopFirst) {
stopNext = false
stopFirst = false
}
}
return next
}
}
ephemient
03/04/2022, 5:45 PMLocalTime.of(23, 58).plusMinutes(5) == LocalTime.of(0, 3)
will never reach 00:00Sergio C.
03/04/2022, 5:52 PMSergio C.
03/04/2022, 5:53 PMephemient
03/04/2022, 5:56 PMephemient
03/04/2022, 5:57 PMfun timeIterator(startTime: LocalTime, endTimeInclusive: LocalTime, stepMinutes: Long): Sequence<LocalTime> =
generateSequence(startTime) { prev ->
val next = prev.plusMinutes(stepMinutes)
if (next > prev && next <= endInclusive) next else null
}
Sergio C.
03/04/2022, 6:00 PM