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

如何使用Kotlin获取GMT时间对应的星期几数值(周日计为1)

Kotlin 实现UTC时间自定义规则星期几数值获取

需求说明

获取GMT(UTC)时间对应的星期几数值,计数规则为:星期日=1,星期一=2,以此类推,星期五对应数值为6,星期六对应数值为7。
示例场景:UTC时间为2021年11月5日星期五 17:14:24时,期望输出结果为6。

JVM平台实现(基于Java 8+ Time API)

这是Kotlin服务端/Android开发最常用的实现方案,无需额外依赖:

import java.time.ZoneOffset
import java.time.ZonedDateTime

fun getUtcCustomWeekday(): Int {
    // 取当前UTC时间
    val utcTime = ZonedDateTime.now(ZoneOffset.UTC)
    // 原生DayOfWeek.value为ISO标准:周一=1,周日=7
    // 转换公式适配自定义规则
    return (utcTime.dayOfWeek.value % 7) + 1
}

测试验证

用需求给出的示例时间做验证:

// 构造示例指定时间
val testUtcTime = ZonedDateTime.of(2021, 11, 5, 17, 14, 24, 0, ZoneOffset.UTC)
val result = (testUtcTime.dayOfWeek.value % 7) + 1
println(result) // 输出 6,完全符合预期

Kotlin多平台实现(基于kotlinx-datetime)

如果是跨端开发场景,可以使用官方多平台时间库实现:

import kotlinx.datetime.Clock
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime

fun getUtcCustomWeekdayMpp(): Int {
    val utcTime = Clock.System.now().toLocalDateTime(TimeZone.UTC)
    // isoDayNumber同样遵循ISO标准:周一=1,周日=7
    return (utcTime.dayOfWeek.isoDayNumber % 7) + 1
}

注意事项

  • 必须显式指定时区为UTC,禁止使用系统默认时区,避免时区偏移导致星期几计算错误
  • 转换公式直接通过取模运算完成适配,无分支判断,边界兼容性更好,无需单独处理周日的特殊情况

内容的提问来源于stack exchange,提问作者Gokul Gadkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:27:05