为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 FieldValue.serverTimestamp() 转换为 Kotlin/Java

如何将 FieldValue.serverTimestamp() 转换为 Kotlin/Java

开心每一天1111 2023-06-08 20:21:43
我想保存在 Firestore 中创建帖子的日期,但我不想使用系统时间。相反,为了准确起见,我想使用服务器时间戳。所以我用来FieldValue.serverTimestamp()获取服务器时间戳,但保存它的变量的数据类型是日期。那么我该如何投射FieldValue.serverTimestamp()到呢Date?下面是我的数据类的样子data class MyModel( var timeStamp: Date,     constructor(): this(Calendar.getInstance().time, "") }PS:当我在数据类中将时间戳声明为 FieldValue 时,出现以下错误:java.lang.RuntimeException:在类 com.google.firebase.firestore.FieldValue 上找不到要序列化的属性
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

您收到以下错误:

java.lang.RuntimeException:在类 com.google.firebase.firestore.FieldValue 上找不到要序列化的属性

因为FieldValue不是受支持的数据类型。您应该使用Date类或任何其他扩展类的类Date,例如Timestamp类。

如何将 FieldValue.serverTimestamp() 转换为 Kotlin/Java 日期类

无需进行任何转换。在 Java 中甚至不需要初始化字段timeStamp

编辑:

在 Kotlin 中,您应该使用如下值timeStamp在构造函数中初始化您的字段:null

data class MyModel( 
              @ServerTimestamp
               val timeStamp: Date? = null)


查看完整回答
反对 回复 2023-06-08
?
隔江千里

TA贡献1906条经验 获得超10个赞

模型类

data class MyModel(
        @get: PropertyName("timestamp") @set: PropertyName("timestamp") var timestamp: Date= Date()
    )

初始化时;

val model = MyModel().apply{ 
  this.timestamp to FieldValue.serverTimestamp()
}


查看完整回答
反对 回复 2023-06-08
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您可以使用一个对象来保存这个值,稍后在使用这个值时检查对象的类型并使用它。据我所知,返回的数据类型是 Long,如果需要,您必须手动将其转换为 Data。


这个代码看起来像这样,


替换这个


data class MyModel( var timeStamp: Date,


data class MyModel( var timeStamp: Object,

并且在任何地方使用它时timeStamp检查它的类型。在java中它看起来像


if (timeStamp instanceof Long) {

    // change Long to Date

    //do this

}else{

    //do something else

}

timeStamp为本身设置值FieldValue.serverTimestamp()。


查看完整回答
反对 回复 2023-06-08
  • 3 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信