У меня есть список объектов.Каждый из них содержит определенный диапазон времени «от» и «до».
Так, например:
import org.joda.time.DateTime
data class MyObject(
val from: String?,
val to: String?
)
asUtcDateTime()
- это просто мой метод расширения, который преобразует данную строкуDateTime
Как найти ближайший объект, который:
- не находится в сегодняшнем временном диапазоне
- будет ближайшим от сегодняшнего дня (будущего или прошлого)?
То, что я до сих пор пробовал, это просто получить ближайший MyObject из прошлого и будущего, например:
val now = DateTime.now()
val nearestPastSchedule = allSchedules
.sortedBy { it.to.asUtcDateTime() }
.filter { it.to.asUtcDateTime() != null }
.lastOrNull { it.to.asUtcDateTime()!!.millis < now.withTimeAtStartOfDay().millis }
val nearestFutureSchedule = allSchedules
.sortedBy { it.from.asUtcDateTime() }
.filter { it.from.asUtcDateTime() != null }
.lastOrNull { it.from.asUtcDateTime()!!.millis > now.withTimeAtStartOfDay().millis }
Не знаю, что было бы хорошим решением с точки зрениясравнивая их (считая, что их можно обнулять), а также возвращая фактический MyObject для каждого из них