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

Android开发:如何判断当前时间是否处于指定开闭时段之间

Android判断当前时间是否在营业时段内

步骤1:清理并格式化时间字符串

注意你的示例开始时间末尾多了个冒号("09:00:00:"),需要先处理掉无效字符,确保时间格式为HH:mm:ss:

fun cleanTimeString(timeStr: String): String {
    // 只保留数字和冒号,截取前8位保证符合HH:mm:ss格式
    return timeStr.replace("[^0-9:]".toRegex(), "").take(8)
}

步骤2:将字符串转换为时间对象

Android API 26及以上可直接用java.time.LocalTime(Java 8+时间API),低版本需引入ThreeTenABP兼容库。

API 26+ 实现代码:

import java.time.LocalTime
import java.time.format.DateTimeFormatter

// 定义时间格式化器
val timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss")

fun stringToLocalTime(timeStr: String): LocalTime? {
    val cleanedStr = cleanTimeString(timeStr)
    return try {
        LocalTime.parse(cleanedStr, timeFormatter)
    } catch (e: Exception) {
        // 格式错误时返回null,可根据业务调整默认值
        null
    }
}

低版本兼容(ThreeTenABP):

先在build.gradle添加依赖:

implementation 'com.jakewharton.threetenabp:threetenabp:1.4.6'

在Application类初始化库:

class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        AndroidThreeTen.init(this)
    }
}

转换代码和API 26+一致,只需替换导入路径为org.threeten.bp.LocalTime和org.threeten.bp.format.DateTimeFormatter。

步骤3:判断当前时间是否在营业时段内

获取当前时间后,分常规同一天和跨天两种情况判断:

fun isCurrentTimeInBusinessHours(startTimeStr: String, endTimeStr: String): Boolean {
    val startTime = stringToLocalTime(startTimeStr) ?: return false
    val endTime = stringToLocalTime(endTimeStr) ?: return false
    val currentTime = LocalTime.now()

    return if (startTime.isBefore(endTime)) {
        // 常规情况:开始时间早于结束时间(同一天)
        currentTime.isAfter(startTime) && currentTime.isBefore(endTime)
    } else {
        // 跨天情况:比如开始时间22:00,结束时间06:00
        currentTime.isAfter(startTime) || currentTime.isBefore(endTime)
    }
}

调用示例

val start = "09:00:00:"
val end = "21:00:00"
val isInBusinessHours = isCurrentTimeInBusinessHours(start, end)
// 根据返回值处理UI逻辑,比如显示「营业中」或「已打烊」

注意事项

  • 确保设备系统时间准确,否则判断结果会出错。
  • 若需指定时区(比如避免用户手动改时区导致偏差),可使用LocalTime.now(ZoneId.of("Asia/Shanghai"))明确时区。

内容的提问来源于stack exchange,提问作者Mahnoor Aslam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:34:59