java – 在Firebase中保存和检索日期

我有一个具有以下结构的模型

public class OfferModel {
    private String mImageUrl;
    private String mOfferCode;
    private String mOfferTitle;
    private String mOfferDescription;
    private boolean mIsRunning;
    private String mCreatorUid;
    private Date mStartDate;
}

其他一切在保存方面都很好.它将Firebase实时数据库保存为

startDate
    date: 22
    day: 3
    hours: 23
    minutes: 20
    month: 5
    seconds: 50
    time: 1466617850476
    timezoneOffset: -330
    year: 116

但是当我尝试检索它时,日期会出现以下错误

java.lang.classCastException: java.util.HashMap cannot be cast to java.util.Date
at com.localvine.models.OfferModel.<init>(OfferModel.java:37)
at com.localvine.managers.OfferManager$1.onDataChange(OfferManager.java:62)
at com.google.android.gms.internal.zzafp.zza(UnkNown Source)
at com.google.android.gms.internal.zzagp.zzSu(UnkNown Source)
at com.google.android.gms.internal.zzags$1.run(UnkNown Source)
at android.os.Handler.handleCallback(Handler.java:615)

我了解Firebase不支持Java Date对象,但由于它将它们保存在地图中,我该如何从该地图中取回日期?有没有在Firebase Android中保存和检索日期的正确方法

解决方法:

您可以将日期存储为纪元日期.您可以使用系统时间System.currentTimeMillis();或者将Firebase服务器时间与其ServerValue.TIMESTAMP一起使用.第一个选项是它随时区和系统设置而变化.因此,如果将日期存储为long,则只需将OfferModel字段mStartDate更改为long,然后使用新Date(long)在检索对象时获取相应的Date.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...