【问题标题】:How to save timestamp in Firestore?如何在 Firestore 中保存时间戳?
【发布时间】:2019-01-16 12:36:43
【问题描述】:

我正在开发一个聊天应用程序,我想存储我的消息的时间戳。我的消息数据类是:

import com.google.firebase.firestore.ServerTimestamp;
import java.util.Date;

public class messgaesDataClass {
    private String messageText;
    private int messageStatus;
    private String messagefrom;
    private @ServerTimestamp Date timestamp;

    public messgaesDataClass(String messageText, int messageStatus, String messagefrom, Date time) {
        this.messageText = messageText;
        this.messageStatus = messageStatus;
        this.messagefrom = messagefrom;
        this.time = time;
    }

    public messgaesDataClass() {
    }

    public String getMessageText() {
        return messageText;
    }

    public void setMessageText(String messageText) {
        this.messageText = messageText;
    }

    public int getMessageStatus() {
        return messageStatus;
    }

    public void setMessageStatus(int messageStatus) {
        this.messageStatus = messageStatus;
    }

    public String getMessagefrom() {
        return messagefrom;
    }

    public void setMessagefrom(String messagefrom) {
        this.messagefrom = messagefrom;
    }

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }
}

我不明白如何制作这个类的对象。我可以在这个类的构造函数中传入什么来初始化时间戳属性?

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    要解决这个问题,您应该删除 Date time 作为构造函数的参数。你的构造函数应该是这样的:

    public messgaesDataClass(String messageText, int messageStatus, String messagefrom) {
        this.messageText = messageText;
        this.messageStatus = messageStatus;
        this.messagefrom = messagefrom;
    }
    

    无需在构造函数中初始化time 对象。 Firebase 服务器将读取您的 time 字段,因为它是 ServerTimestamp(由于注释),并且它将相应地使用服务器时间戳填充该字段。

    【讨论】:

    • @AmitMishra OP 正在寻找 Android 中的解决方案,而该答案适用于 Javascript。
    • @AlexMamo 这个答案也适用于 Android - 只需要使用 com.google.firebase.firestore.FieldValue.serverTimestamp()
    • 如果我们有更多这样的时间戳字段怎么办,例如,用于捕获上次登录时间、上次活动时间等,具有相同的@ServerTimestamp 注释。我们将如何更新这些?
    • @H.Karatsanov 在这种情况下,您传递的是自定义日期,Firestore 不会为您生成 serverTimestamp。
    猜你喜欢
    • 2021-02-19
    • 2021-12-31
    • 2020-02-09
    • 2018-06-22
    • 2018-08-13
    • 2019-12-02
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    相关资源
    最近更新 更多