如何将LocalDateTime转换为RealmInstant?格式不符问题求助
LocalDateTime 转 RealmInstant 的正确方法
首先澄清你的疑问:你当前的转换逻辑本身是正确的,两种格式差异只是RealmInstant.toString()的显示规则导致的:
- 当时间落在公元1-9999年范围内时,toString输出普通ISO-8601格式(如你的
2022-11-23T22:04:06.000+00:00) - 当时间超出这个范围(比如示例中的+054848年,属于远未来),才会使用带符号的扩展年份格式
优化后的转换代码
你当前的代码重复创建了两次LocalDateTime实例,可以简化为:
val localDateTime = LocalDateTime.of(pickedDate, pickedTime) val realmInstant = RealmInstant.from( epochSeconds = localDateTime.toEpochSecond(ZoneOffset.UTC), nanosecondAdjustment = localDateTime.nano )
验证转换正确性
如果需要确认转换后的RealmInstant是否准确,不要依赖toString的格式,而是直接获取其时间戳值:
// 验证纪元秒数 println(realmInstant.epochSeconds) // 验证纳秒偏移 println(realmInstant.nanosecondsOfSecond)
这些数值和LocalDateTime转换后的对应值一致,就说明转换是正确的。
强制生成扩展年份格式(可选)
如果业务上需要统一输出带符号的扩展格式,可以手动格式化RealmInstant:
val formatter = DateTimeFormatter.ISO_INSTANT.withResolverStyle(ResolverStyle.STRICT) // 转换为带扩展年份的字符串 val formatted = formatter.format(realmInstant.toInstant())
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

