kotlin - 如何反序列化格式为 "yyyy-mm-dd hh:mm:ss"的日期?

标签 kotlin kotlin-android-extensions kotlin-multiplatform date-parsing kotlin-multiplatform-mobile

我从 API 中获取了一个格式类似于“2021-03-26 22:02:53”的日期,该日期不是 ISO 格式,并且我为其创建了一个自定义序列化程序,但出现错误。 我也不想使用 ISO 格式,我想以“yyyy-mm-dd hh:mm:ss”的形式发回日期。

由于我们无法在 Kotlin 多平台中使用 Java.Date,那么序列化这样的日期格式的正确解决方案是什么?

IDE with code file open

Debug frame variables

谢谢

最佳答案

目前 kotlinx-datetime 仅支持 ISO 格式。

但是,您期望的格式足够接近 ISO,因此您可以通过简单地将空格替换为 T 来调整它,并且应该可以正常使用。这并不理想,但它应该在等待 Kotlinx 日期时间提供正确格式支持的同时完成这项工作。

return decoder.decodeString().replace(' ', 'T').toLocalDateTime()

序列化时您也可以执行相反的操作:

encoder.encodeString(value.toString().replace('T', ' '))

关于kotlin - 如何反序列化格式为 "yyyy-mm-dd hh:mm:ss"的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67876143/

相关文章:

kotlin - 在 Kotlin Android 中用于初始化 PointF 或 RectF 时,Float 原语神奇地变为 0

android - 在 kotlin 中打开键盘时如何隐藏底部按钮?

android - 无法将 Kotlin Android 扩展添加到我的项目中

gradle - 如何为 kotlin-multiplatform (kotlin 1.3.50) 添加对 build.gradle.kts 的依赖项?

java - 使用函数作为参数类型使用 getDeclaredMethod

java - 我是否在组合键中正确定义了多对一?

android - Anko 警报文本颜色显示错误

android - 在 Kotlin 中如何在新窗口中打开链接

kotlin - 是否有 Kotlin-Multiplatform 功能或模式可以帮助实现通用抽象,比如 Closeable 接口(interface)?

android - Kotlin Native (iOS) 中的 Kotlin Multiplatform Mobile : Ktor - how to cancel active coroutine (network request, 后台工作)?