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

我想保存在 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 上找不到要序列化的属性


开心每一天1111
浏览 125回答 3
3回答

烙印99

您收到以下错误:java.lang.RuntimeException:在类 com.google.firebase.firestore.FieldValue 上找不到要序列化的属性因为FieldValue不是受支持的数据类型。您应该使用Date类或任何其他扩展类的类Date,例如Timestamp类。如何将 FieldValue.serverTimestamp() 转换为 Kotlin/Java 日期类无需进行任何转换。在 Java 中甚至不需要初始化字段timeStamp。编辑:在 Kotlin 中,您应该使用如下值timeStamp在构造函数中初始化您的字段:nulldata class MyModel(                @ServerTimestamp                val timeStamp: Date? = null)

隔江千里

模型类data class MyModel(         @get: PropertyName("timestamp") @set: PropertyName("timestamp") var timestamp: Date= Date()     )初始化时;val model = MyModel().apply{    this.timestamp to FieldValue.serverTimestamp() }

qq_花开花谢_0

您可以使用一个对象来保存这个值,稍后在使用这个值时检查对象的类型并使用它。据我所知,返回的数据类型是 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()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java