我有一个具有以下结构的模型
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 Realtime数据库中保存为
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
。第一个选项的作用是随时区和系统设置而变化。因此,如果您将日期存储为长日期,则只需将OfferModel
字段更改mStartDate
为a long
,然后在检索对象时使用new Date(long)
来获取相应Date
的日期。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句