Android Parse - 复杂的查询

时间:2016-01-31 12:38:20

标签: java android arrays parse-platform

我有一个函数应该从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对象?

1 个答案:

答案 0 :(得分:0)

解析以UTC保存时间,确保将其转换为UTC并尝试查询, 您现有的日期可以转换为像这样的

SimpleDateFormat lv_formatter = new SimpleDateFormat(); 
lv_formatter.setTimeZone(TimeZone.getTimeZone("UTC"));  
lv_dateFormateInUTC = lv_formatter.format(lv_localDate);