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

Android(最低版本21)Kotlin正确解析Date的方法,现有解析逻辑不生效

问题原因
  • 原格式字符串未匹配输入日期中的T分隔符
  • 使用了12小时制标识hh,输入时间为24小时制,需替换为HH
  • 未匹配末尾的UTC时区标识Z,也未对应设置时区,会引发解析失败或时区偏移错误
正确实现方案

方案1:基于SimpleDateFormat修改(不推荐,SimpleDateFormat为线程不安全类)

val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").apply {
    timeZone = TimeZone.getTimeZone("UTC")
}
var convertedDate = Date()
try {
    convertedDate = dateFormat.parse(message.created_at)
} catch (e: ParseException) {
    e.printStackTrace()
}

格式字符串里的'T'和'Z'用单引号包裹表示固定匹配字符,同时强制设置时区为UTC,避免解析后出现时区偏移问题。

方案2:基于java.time包实现(推荐,类不可变线程安全,无需自定义格式)

你要解析的格式是标准ISO 8601瞬时时间格式,可直接用Instant类解析,无需手动编写格式匹配规则:

var convertedDate = Date()
try {
    // 直接解析标准ISO格式字符串
    val instant = Instant.parse(message.created_at)
    // 如果不需要兼容旧Date类,可直接使用instant对象
    convertedDate = Date.from(instant)
} catch (e: DateTimeParseException) {
    e.printStackTrace()
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:36:04