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

Error when using Jodatime object to store and query in parse.com

我正在尝试使用我使用 jodatime 创建的日期时间对象存储和查询 Parse.com class 中的 updatedAt 和 createdAt 列。 但是,无论我在做什么,我都会不断出错。

我正在执行以下操作以创建一个我想存储在 Parse 中的日期时间对象 class。

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

我确定它与日期时间对象的创建方式有关。我尝试了很多方法来格式化它,但没有成功。

谁能给我指出正确的方向。

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

Parse 适用于 java Date 对象..不适用于 joda DateTime 对象。它们不是同一件事。因此,您必须先将其转换为 java 日期,然后再前往 Parse 附近的任何地方。