使用Jodatime对象在parse.com中存储和查询时出错

时间:2016-03-09 19:13:21

标签: android parse-platform jodatime

我试图使用我使用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对象有关。我尝试以多种方式对其进行格式化,但没有运气。

任何人都可以指出我正确的方向。

非常感谢,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

Parse使用java Date对象...不使用joda DateTime对象。它们不是同一件事。所以你必须在去Parse附近的任何地方之前将它转换为java Date。