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

cal*_*tus 4 java android kotlin firebase google-cloud-firestore

我想保存在 Firestore 中创建帖子的日期,但我不想使用系统时间。相反,为了准确起见,我想使用服务器时间戳。所以我FieldValue.serverTimestamp()用来获取服务器时间戳,但保存它的变量的数据类型是日期。那么我怎样才能投射FieldValue.serverTimestamp()Date

以下是我的数据类的外观

data class MyModel( var timeStamp: Date,
    constructor(): this(Calendar.getInstance().time, "")
}
Run Code Online (Sandbox Code Playgroud)

PS:当我在数据类中将时间戳声明为 FieldValue 时,出现以下错误:

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

Ale*_*amo 7

您收到以下错误:

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)
Run Code Online (Sandbox Code Playgroud)