Java 如何在Firestore中保存时间戳?

Java 如何在Firestore中保存时间戳?,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我正在开发聊天应用程序,我想存储我的消息的时间戳。我的邮件数据类是: import com.google.firebase.firestore.ServerTimestamp; import java.util.Date; public class messgaesDataClass { private String messageText; private int messageStatus; private String messagefrom; priva

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

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;
    }
}

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

要解决这个问题,应该删除日期时间作为构造函数的参数。您的构造函数应该如下所示:

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

无需在构造函数中初始化时间对象。Firebase服务器将读取您的时间字段,因为它是一个服务器时间戳,因为注释,它将相应地用服务器时间戳填充该字段。

要解决此问题,您应该删除日期时间作为构造函数的参数。您的构造函数应该如下所示:

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

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

检查此链接@AmitMishra OP正在Android中寻找解决方案,而答案是Javascript。@AlexMamo该答案也适用于Android-只需使用com.google.firebase.firestore.FieldValue.servertimestamp字段如果我们有更多这样的时间戳字段,例如用于捕获上次登录时间、上次活动时间等,该怎么办。,使用相同的@ServerTimestamp注释。我们将如何更新这些?@H.Karatsanov在这种情况下,您将传递一个自定义日期,Firestore将不会为您生成serverTimestamp。请检查此链接@AmitMishra OP正在Android中寻找解决方案,而答案是Javascript。@AlexMamo该答案也适用于Android-只需使用com.google.firebase.firestore.FieldValue.servertimestamp字段如果我们有更多这样的时间戳字段,例如用于捕获上次登录时间、上次活动时间等,该怎么办。,使用相同的@ServerTimestamp注释。我们将如何更新这些?@H.Karatsanov在这种情况下,您将传递一个自定义日期,Firestore将不会为您生成serverTimestamp。