Kotlin中如何将自定义时间戳字符串转换为Instant类实例
字符串转Instant实例解决方案
你给出的示例时间字符串"2021-05-03T00:00:00.000Z"是符合Instant默认支持的ISO 8601标准瞬时时间格式,直接调用内置的Instant.parse()静态方法即可完成转换:
Kotlin 实现代码
// 1. 解析自定义时间字符串为Instant实例 val customInstant = Instant.parse("2021-05-03T00:00:00.000Z") // 2. 传入TimeTZ构造函数即可,第二个isLocal参数根据实际业务需求赋值 val timeTZ = TimeTZ(customInstant, false)
特殊场景处理
如果你的时间字符串不符合默认ISO 8601格式,可自定义DateTimeFormatter指定规则后解析:
- 示例:解析无时区标识的东八区时间字符串
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") .withZone(ZoneId.of("Asia/Shanghai")) val customInstant = Instant.from(formatter.parse("2021-05-03 00:00:00"))
注意要点
- 解析时请确保时间字符串的时区和你业务需要的时区一致,示例字符串后缀的
Z代表UTC时区,和你之前用Clock.system(ZoneId.of("UTC"))生成的时间时区完全匹配。 - 如果解析时报格式错误,请先校验字符串是否符合你指定的格式规则,避免出现空格、字符缺失等问题。
内容的提问来源于stack exchange,提问作者Saba
相关产品推荐
相关产品推荐

