首页 > 解决方案 > 如何使用 kotlin 制作时隙

问题描述

"StartingTime":"11:00",
"EndingTime":"5:00"

您好,我有一个 JSON 响应,其中我有这两个字符串。我想做的是我想使用这些startingTime 和 EndingTime.BTW 制作时隙,这两个可以针对不同的响应进行更改。我想制作时隙它们之间有 2 小时的差异。我还想在 EndingTime 之后再增加 2 小时。

示例:开始时间 = 11:00 结束时间 = 5:00

我需要的时间段 = 11:00-1:00 , 1:00-3:00 , 3:00-5:00 , 5:00-7:00

同样,一旦我得到这个时间段,我想将它们存储并添加到微调器中。我怎样才能实现它。谢谢。

标签: android-studiokotlindevelopment-environment

解决方案


您可以制作一个简单的数据类来表示一个时隙。

data class TimeSlot(val startTime: LocalTime, val endTime: LocalTime)

然后编写一个函数,将其拆分为适合的多个插槽:

fun TimeSlot.divide(lengthHours: Long): List<TimeSlot> {
    require(lengthHours > 0) { "lengthHours was $lengthHours. Must specify positive amount of hours."}
    val timeSlots = mutableListOf<TimeSlot>()
    var nextStartTime = startTime
    while (true) {
        val nextEndTime = nextStartTime.plusHours(lengthHours)
        if (nextEndTime > endTime) {
            break
        }
        timeSlots.add(TimeSlot(nextStartTime, nextEndTime))
        nextStartTime = nextEndTime
    }
    return timeSlots
}

请注意,这个简单的比较nextEndTime > endTime不会处理跨越午夜的时间范围。如果你想处理它,你必须让它变得更复杂一些。

您可以在其他现有问题中查找如何将 JSON 值解析为 LocalTimes 以及如何从列表中填充 Spinner。


推荐阅读