【问题标题】:Calendar query sorted by date and time按日期和时间排序的日历查询
【发布时间】:2020-10-06 21:32:31
【问题描述】:

我正在尝试返回按日期和时间排序的日历事件查询,以便我可以遍历它们。我是这样查询的:

private Cursor mCursor = null;
private static final String[] COLS = new String[]{CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART, CalendarContract.Events.AVAILABILITY};
mCursor = getContentResolver().query(CalendarContract.Events.CONTENT_URI, COLS, null, null, null);
mCursor.moveToLast();

这很好用,只是它似乎根据创建时间而不是日期和时间返回日历事件。例如,如果我为 2012 年 12 月 25 日创建一个新事件,它将显示为最后一个结果。

我的最终目标是找到在当前时间之前开始的第一个事件。例如,如果当前是上午 8:00,我想查找在上午 8:00 之前开始的第一个事件。然后我想检查该事件的持续时间,看看它是否是当前正在进行的事件。

是否有一种简单的方法可以返回按日期和时间排序的查询,或者我必须在查询结果后执行排序?更好的是,有没有一种简单的方法可以找到当前时间之前的第一个事件?

【问题讨论】:

    标签: android google-calendar-api android-calendar


    【解决方案1】:

    也许是这个?

        private Cursor mCursor = null;
        private static final String[] COLS = new String[]{CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART, CalendarContract.Events.AVAILABILITY};
        mCursor = getContentResolver().query(CalendarContract.Events.CONTENT_URI, COLS, null, null, CalendarContract.Events.DTSTART + " ASC");
        mCursor.moveToLast();
    

    【讨论】:

    • 谢谢,但它不喜欢"DESC"。我把它拿出来,它根据开始时间排序。
    • 这样您就可以从光标创建日期集合并使用 Collections.sort()
    • Collections.sort(dateList, new Comparator(){ public int compare(Date date1, Date date2){ return date1.after(date2); } });
    • @Jack 或 ASC 代替 DESC
    • 这个答案很好用。我只是拿出“DESC”,它就可以了。
    【解决方案2】:

    另一种方式是这样的。

    Collections.sort(dateList, new Comparator<Date>(){
        public int compare(Date date1, Date date2){
            return date1.after(date2);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2015-05-08
      • 2014-06-29
      相关资源
      最近更新 更多