将数据类的对象添加到 Kotlin 的 Firestore 时如何添加 Firebase 时间戳?

Posted

技术标签:

【中文标题】将数据类的对象添加到 Kotlin 的 Firestore 时如何添加 Firebase 时间戳?【英文标题】:How to add Firebase Timestamp when adding an object of a data class to the Firestore in Kotlin? 【发布时间】:2021-10-06 13:09:40 【问题描述】:

以下是我将产品详细信息添加到Firestore 的数据类示例,我想添加Firebase 时间戳以了解添加项目的时间。尽管我不知道该怎么做,但我尝试喜欢以下内容,但出现错误。

注意:我知道如何将时间戳添加到 Firestore,并且我在添加 Hashmap 时使用了 "timestamp" to FieldValue.serverTimestamp()。当它是我的数据类对象的一部分时,我遇到了麻烦。

    @Parcelize
data class Product(
    val user_id: String = "",
    val mrp: String= "0.00",
    val price: String = "0.00",
    val description: String = "",
    val stock_quantity: String = "",
    val image: String = "",
    val product_added_date: FieldValue? = null,
) : Parcelable

要添加到Firestore 的产品对象。

val product = Product(
        FirestoreClass().getCurrentUserID(),
        et_product_mrp.text.toString(),
        et_product_price.text.toString(),
        et_product_description.text.toString().trim  it <= ' ' ,
        et_product_quantity.text.toString().trim  it <= ' ' ,
        mProductImageURL!!,,
        et_product_delivery_charge.text.toString().trim  it <= ' ' ,
        imageURL.size,
        FieldValue.serverTimestamp(),
    )

【问题讨论】:

这方面有什么帮助吗? 【参考方案1】:

如果要使用Product类的对象添加时间戳类型属性,请将类中的字段定义为Date类型并使用如下注解:

@ServerTimestamp
var product_added_date: Date? = null,

当您创建Product 类的对象时,无需设置日期。您不必将任何内容传递给构造函数。 Firebase 服务器将读取您的 product_added_date 字段,因为它是一个 ServerTimestamp(请参阅注释),并且它将相应地使用服务器时间戳填充该字段。

否则,创建一个 Map 并放置:

"product_added_date" to FieldValue.serverTimestamp()

【讨论】:

太棒了,解释得很好。它做得很好。我用它来添加时间戳并将其显示在我的应用程序中。只是好奇我是否可以以自定义格式取回它?假设我想将其显示为 dd/mm/yy。谢谢。 因为它是 Java Date 类型的属性你可以format it as you want.

以上是关于将数据类的对象添加到 Kotlin 的 Firestore 时如何添加 Firebase 时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 初学者类和对象-类的修饰符

如何在 Kotlin 中解析 JSON?

Kotlin中数据类和单例类的实现和讲解面向对象编程接口的实现

Kotlin 类的 Android 单元测试因“找不到符号类...”而失败

kotlin 委托

Kotlin进阶学习3