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。