我有一个具有以下结构的模型
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 中是否有保存和检索日期的正确方法?
原文由 0xC0DED00D 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以将日期存储为纪元日期。您可以使用系统时间
System.currentTimeMillis();
或使用 Firebase 服务器时间及其ServerValue.TIMESTAMP
。第一个选项的问题是它会随着时区和系统设置而变化。 So if you store the date as a long, you just have to change yourOfferModel
fieldmStartDate
to along
and then usenew Date(long)
获取对象时得到对应的Date
。