我试图使用我使用jodatime创建的日期时间对象来存储和查询Parse.com类中的updatedAt和createdAt列。 但是,无论我在做什么,我都会收到错误。
我正在创建一个我想要存储在Parse类中的日期时间对象。
DateTime dt = new DateTime(DateTimeZone.UTC);
DateTime trafficReportExpiry = dt.minusHours(1);
ParseObject trafficReport = new ParseObject("TrafficReport");
trafficReport.put("reportExpiry", trafficReportExpiry);
trafficReport.saveEventually();
当我使用以下操作时,我会遇到跟踪日志
的崩溃E/AndroidRuntime: FATAL EXCEPTION: main
Process: info.androidhive.bdpocketbook, PID: 18022
java.lang.IllegalArgumentException: invalid type for value: class org.joda.time.DateTime
at com.parse.ParseObject.performPut(ParseObject.java:3023)
at com.parse.ParseObject.put(ParseObject.java:3010)
at info.androidhive.bdpocketbook.MainActivity.onConnected(MainActivity.java:255)
at com.google.android.gms.common.internal.zzk.zzk(Unknown Source)
at com.google.android.gms.common.api.internal.zzj.zzi(Unknown Source)
at com.google.android.gms.common.api.internal.zzh.zzpx(Unknown Source)
at com.google.android.gms.common.api.internal.zzh.onConnected(Unknown Source)
at com.google.android.gms.common.api.internal.zzl.onConnected(Unknown Source)
at com.google.android.gms.common.api.internal.zzc.onConnected(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzg.zzqL(Unknown Source)
at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
at com.google.android.gms.common.internal.zzj$zza.zzw(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzc.zzqN(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzb.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
当我尝试在Parse的updatedAt列使用Joda创建的数据时对象时,类似的问题
我的Parse.com查询代码:
DateTime dt = new DateTime(DateTimeZone.UTC);
DateTime trafficReportExpiry = dt.minusHours(1);
ParseQuery<ParseObject> query = ParseQuery.getQuery("TrafficReport");
query.setLimit(100);
query.whereGreaterThan("updatedAt", trafficReportExpiry);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> trafficObjects, ParseException e) {
if (e != null) {
Toast.makeText(getActivity().getApplicationContext(),"An error occurred while getting traffic data.",Toast.LENGTH_SHORT).show();
Log.e("Parse traffic error", e.toString());
}
else {
Log.e("trafficObjects", "Retrieved " + trafficObjects.size() + " traffic objects");
Toast.makeText(getActivity().getApplicationContext(),"Traffic Data Success",Toast.LENGTH_SHORT).show();
return;
}
}
});
解析查询失败,并显示以下日志:
E/Parse traffic error: com.parse.ParseException: java.lang.IllegalArgumentException: invalid type for ParseObject: class org.joda.time.DateTime
我确定它与如何创建datetime对象有关。我尝试以多种方式对其进行格式化,但没有运气。
任何人都可以指出我正确的方向。
非常感谢,非常感谢任何帮助。
答案 0 :(得分:1)
Parse使用java Date对象...不使用joda DateTime对象。它们不是同一件事。所以你必须在去Parse附近的任何地方之前将它转换为java Date。