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

以下是我的数据类的外观

data class MyModel( var timeStamp: Date,
    constructor(): this(Calendar.getInstance().time, "")
}

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

最佳答案

您收到以下错误:



因为 FieldValue 不是 supported data type 。您应该使用 Date 类或扩展 Date 类的任何其他类,例如 Timestamp 类。



没有必要做任何 Actor 。在 Java 中,甚至 没有 需要初始化 timeStamp 字段。为了使其工作,您应该只使用注释,如我在以下帖子中的回答中所述:

  • ServerTimestamp is always null on Firebase Firestore

  • 编辑:

    在 Kotlin 中,您应该在构造函数中使用 timeStamp 值初始化 null 字段,如下所示:
    data class MyModel(
                   @ServerTimestamp
                   val timeStamp: Date? = null)
    

    关于java - 如何将 FieldValue.serverTimestamp() 转换为 Kotlin/Java 日期类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57534290/

    10-14 08:37