在 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 附近的任何地方。
我正在尝试使用我使用 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 附近的任何地方。