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

在Kotlin中如何获取设备的当前时间?

Kotlin 从设备端获取当前时间实现方案

以下方案覆盖通用JVM环境、Android全版本场景,可按需选择:

通用方案(JVM 1.8+ / Android API 26+ / 已开启核心库脱糖)

官方推荐优先使用java.time包相关API,线程安全且功能完善:

  • 获取毫秒级时间戳(1970-01-01 UTC 至今的毫秒数,跟随设备系统时间设置)
val currentTimestamp = System.currentTimeMillis()
  • 获取结构化时间对象,可直接读取年、月、日、时、分、秒等字段
import java.time.LocalDateTime
import java.time.ZonedDateTime
import java.time.ZoneId

// 设备当前时区的本地时间,无时区信息
val localTime = LocalDateTime.now()
// 带时区的完整时间对象,默认使用设备系统时区,也可手动指定时区
val zonedTime = ZonedDateTime.now(ZoneId.systemDefault())

// 字段读取示例
val currentYear = localTime.year
val currentMonth = localTime.monthValue
val currentHour = localTime.hour
  • 格式化为自定义样式的字符串
import java.time.format.DateTimeFormatter

val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val formattedTime = LocalDateTime.now().format(formatter)
// 输出示例:2024-05-20 15:42:30

Android 低版本兼容方案(API < 26 未开启脱糖)

可使用java.util包下的传统API,注意SimpleDateFormat非线程安全,不要设为全局静态变量:

  • 结构化时间读取
import java.util.Calendar

val calendar = Calendar.getInstance()
val year = calendar.get(Calendar.YEAR)
val month = calendar.get(Calendar.MONTH) + 1 // 系统返回月份从0开始,需+1
val day = calendar.get(Calendar.DAY_OF_MONTH)
val hour = calendar.get(Calendar.HOUR_OF_DAY)
val minute = calendar.get(Calendar.MINUTE)
  • 字符串格式化
import java.text.SimpleDateFormat
import java.util.Locale

val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
val formattedTime = sdf.format(System.currentTimeMillis())

注意事项

以上所有方法获取的时间都跟随设备系统设置,若用户手动修改系统时间会导致取值不准。如果需要不受系统设置影响的相对时间,Android 环境可使用SystemClock.elapsedRealtime()获取系统开机至今的毫秒数,结合首次拉取的服务端标准时间计算校准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:07