FireServer Firestore上的@ServerTimestamp始终为null

时间:2018-02-22 13:14:36

标签: java android firebase google-cloud-firestore

这是我的模型类:

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

        public class YourModelClass {
            private @ServerTimestamp Date timestamp;

            YourModelClass() {}

            public Date getTimestamp() {
                return timestamp;
            }

            public void setTimestamp(Date timestamp) {
                this.timestamp = timestamp;
            }

            @Override
            public String toString() {
                return "YourModelClass{" +
                        "timestamp=" + timestamp +
                        '}';
            }
        }

我在Log

中打印时变为null
    Logger.info("Date", new YourModelClass()+"------"+new YourModelClass().getTimestamp() + "");

这是错误:

Output: 02-22 18:33:12.066 18980-18980/com.spendeye I/Date: YourModelClass{timestamp=null}------null

请让我知道解决方案的人。

2 个答案:

答案 0 :(得分:0)

这不是从数据库中检索日期的正确方法。假设您正在使用get()调用,在将date检索为类型Date类的对象时,您需要使用以下代码:

Date date = yourModelClass.getDate();
DateFormat dateFormat = SimpleDateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US); //Or any other locale
String creationDate = dateFormat.format(date);
Log.d("TAG", creationDate);

正如您所看到的,我正在使用从数据库中获取的格式化日期,我不是在创建类的新实例。您也可以在我的 tutorials 中查看此方法,我已逐步解释了如何添加和显示日期。

答案 1 :(得分:0)

如果您在将日志存储到Firestore之前打印日志,那么在将任何类保存到Firestore之前,任何类中timestamp的属性@ServerTimestamp的值始终为null。

因此你得到 null

如果您可以删除日志语句并让对象保存在Firestore上,那么当您从Firestore中取回该类对象时,日志语句会有所不同,而不是显示为空。