我有一个函数应该从Parse DB获取与用户选择的日期匹配的事件。 涉及的两个类看起来像这样:SHOW-CLASS& SHOWTIME-CLASS 描述:Showtimeclass只有一个属性,它是一个日期属性。 Showtimeclass是一个指向Showtimeclass对象的objectId数组。 所以我的任务是找到与所选日期匹配的放映时间,然后将显示的放映时间数组与Showclass相匹配。我试图将Showclass数组与我生成的数组匹配,但没有成功。 logcat中没有错误。我的代码如下所示:
主要查询代码:
temps = new ArrayList<>();
tempTimes = new ArrayList<>();
result = new ArrayList<>();
tempTimes = getTimes();
Log.e("SKG: temptimes", String.valueOf(tempTimes.size()));
final ParseQuery<ParseObject> showQuery = ParseQuery.getQuery("Show");
showQuery.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> likeList, ParseException e) {
if (e == null) {
for (ParseObject likeItem : likeList) {
temps = likeItem.getList("showtimes");
Log.e("SKG: temps", String.valueOf(temps.size()));
for (String emp : tempTimes) {
if (temps.contains(emp)) {
result.add(likeItem);
Log.e("SKG: event", String.valueOf(result.size()));
}
}
}
}
}
});
GetTimes功能:
private ArrayList<String> getTimes() {
final ArrayList<String> t1 = new ArrayList<>();
final ParseQuery<ParseObject> showtimeQuery = ParseQuery.getQuery("Showtime");
Date de = getDateFromDatePicket(dialog.getDatePicker());
Date ds = getDateFromDatePicketStart(dialog.getDatePicker());
showtimeQuery.whereLessThanOrEqualTo("date", de);
showtimeQuery.whereGreaterThanOrEqualTo("date", ds);
showtimeQuery.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> likeList, ParseException e) {
if (e == null) {
for (ParseObject likeItem : likeList) {
t1.add(likeItem.getObjectId());
}
}
}
});
Log.e("SKG: event", String.valueOf(t1 .size()));
return t1;
}
所以,我的问题是:如何在Showclass中获取与Showtimeclass中所选日期相匹配的objectId对象?
答案 0 :(得分:0)
解析以UTC保存时间,确保将其转换为UTC并尝试查询, 您现有的日期可以转换为像这样的
SimpleDateFormat lv_formatter = new SimpleDateFormat();
lv_formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
lv_dateFormateInUTC = lv_formatter.format(lv_localDate);