如何以“yyyy-mm-dd hh:mm:ss”格式反序列化日期?

问题描述

我从非 ISO 格式的 API 中获取格式为“2021-03-26 22:02:53”的日期,我为其创建了自定义序列化程序,但出现错误。 我也不想使用 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',' '))