如何将包含在数据类中的字符串解码为日期?我有几个字符串,它们实际上是日期("2022-11-24T23:37:34.668Z")
。这些数据存储在firebase中的文档中(显然文档中不仅有日期字符串,还有其他类型)。我想要反序列化,这样表示日期的字符串就会被自动解析。
目前我解码如下:
private inline fun <reified T> parse(snapshot: DocumentSnapshot?): T? {
return snapshot?.toObject<T>(T::class.java)
}
我没有看到如何指定日期解码器的方法。那么,我该如何做到这一点呢?
确实没有办法为特定的字段/属性指定自定义解码器。
我能很快想到的最好的选择是:
- 在数据类中添加自定义函数,将字符串解析为日期,并将新值设置为日期并将其标记为排除在数据库之外。
- 为字符串字段定义一个自定义类(例如
StringDate
),它处理相同的解析和序列化,然后在你的数据类中使用。
我不知道现有的这两个公共实现。
当然,最简单的选择是将日期/时间值存储在Timestamp
字段中,然后Firestore SDK会自动将其转换为每个支持平台的本机日期/时间类型。