You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中从营业时间字符串提取日期时间并按天格式化输出

实现方案

我们可以通过「拆分规则段→解析日期范围→映射存储→按序输出」四步完成格式转换,以下是可直接运行的Kotlin实现,完全适配你给出的所有输入样例:

fun formatBusinessHours(raw: String): List<String> {
    // 固定星期顺序,保证输出顺序符合习惯
    val weekOrder = listOf("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
    val dayToHours = mutableMapOf<String, String>()

    // 1. 拆分多组时间规则
    val ruleSegments = raw.split("/").map { it.trim() }
    ruleSegments.forEach { segment ->
        // 2. 拆分单条规则的日期部分、营业时间部分:以第一个出现的数字为分割点
        val firstDigitIndex = segment.indexOfFirst { it.isDigit() }
        val dayPart = segment.substring(0, firstDigitIndex).trim()
        val hours = segment.substring(firstDigitIndex).trim()

        // 3. 解析日期规则,支持范围和单个日期两种格式
        val dayUnits = dayPart.split(",").map { it.trim() }
        dayUnits.forEach { unit ->
            if (unit.contains("-")) {
                // 处理日期范围,如 Mon-Thu
                val (startDay, endDay) = unit.split("-").map { it.trim() }
                val startIndex = weekOrder.indexOf(startDay)
                val endIndex = weekOrder.indexOf(endDay)
                for (i in startIndex..endIndex) {
                    dayToHours[weekOrder[i]] = hours
                }
            } else {
                // 处理单个日期,如 Sun
                dayToHours[unit] = hours
            }
        }
    }

    // 4. 按星期固定顺序输出结果
    return weekOrder.map { "$it ${dayToHours[it]}" }
}

// 测试用例
fun main() {
    val string1 = "Mon-Thu, Sun 11:30 am - 9:00 pm  / Fri-Sat 11:30 am - 9:30 pm"
    val string2 = "Mon-Sun 11:00 am - 10:30 pm"
    val string3 = "Mon-Thu, Sun 11:30 am - 10:00 pm  / Fri-Sat 11:30 am - 10:30 pm"

    println("==== string1 转换结果 ====")
    formatBusinessHours(string1).forEach { println(it) }
    println("\n==== string2 转换结果 ====")
    formatBusinessHours(string2).forEach { println(it) }
    println("\n==== string3 转换结果 ====")
    formatBusinessHours(string3).forEach { println(it) }
}

运行后输出结果和你给出的示例完全一致,如果后续遇到API返回的格式变种,调整分割规则即可适配。

内容的提问来源于stack exchange,提问作者Sean H.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:45:02