当前位置: 首页 > 知识库问答 >
问题:

Android日历查看日历

陈博容
2023-03-14

我目前正在尝试这样做,当我在日历视图中选择一天时,该天的所有事件都会列出。我很难让它显示一天中的所有事件(看起来它在上午12点到11点59分不起作用?)。这里是我目前拥有的。

calenderView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {

        @Override
        public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
            getEvents(year, month, dayOfMonth);
        }
    });

public void getEvents(int year, int month, int day){
    log.logInfo("getting events from " + String.valueOf(year) + "/" + String.valueOf(month) + "/" + String.valueOf(day));
    String[] projection = new String[] { CalendarContract.Events.CALENDAR_ID, CalendarContract.Events.TITLE, CalendarContract.Events.DESCRIPTION, CalendarContract.Events.DTSTART, CalendarContract.Events.DTEND, CalendarContract.Events.ALL_DAY, CalendarContract.Events.EVENT_LOCATION };
    // 0 = January, 1 = February, ...
    Calendar startTime = Calendar.getInstance();
    startTime.set(year,month,day, 00, 00);
    Calendar endTime= Calendar.getInstance();
    endTime.set(year,month,day, 23, 59);
    // the range is all data from 2014
    String selection = "(( " + CalendarContract.Events.DTSTART + " >= " + startTime.getTimeInMillis() + " ) AND ( " + CalendarContract.Events.DTSTART + " <= " + endTime.getTimeInMillis() + " ))";
    Cursor cursor = this.getBaseContext().getContentResolver().query( CalendarContract.Events.CONTENT_URI, projection, selection, null, null );
    // output the events
    if (cursor.moveToFirst()) {
        do {
            log.logInfo("Title: " + cursor.getString(1));
            log.logInfo("Start-Time: " + (new Date(cursor.getLong(3))).toString());
            log.logInfo("Location: " + cursor.getString(6));
        } while ( cursor.moveToNext());
    }
    log.logInfo("-----------------------");

}

如果我有12am-11:59am的事件1和12pm-11:59pm的事件2,则仅列出事件2。

共有1个答案

赫连棋
2023-03-14

您可以尝试以毫秒为单位记录实际时间并进行比较<代码>日历。getInstance()将为您设置本地时区的日历,因此您将获得从午夜到当地时间23:59之间开始的所有事件。您确定数据库也都在本地时间(而不是UTC或其他时间)吗?只是猜测而已。

 类似资料:
  • 我有一个日期列表,我想在calendarview上用红色显示。我该怎么办? 我的活动... 为了给日期上色,我必须添加什么代码?

  • 我正在做一个应用程序,我想添加一个日历视图。我只想用日、月和年来标记一些特定的日期。我创建了MCalendarView库,但我不喜欢它的设计。 有人知道如何在常规CalendarView中标记日期或改进MCalendarView的设计? 谢谢你抽出时间。

  • git log命令可以显示所有的提交(commit)。 ...... $ git log v2.5.. # commits since (not reachable from) v2.5 $ git log test..master # commits reachable from master but not test $ git log master..test # comm

  • 本文档介绍如何查看 TiDB 集群各组件日志,以及 TiDB 慢查询日志。 TiDB 集群各组件日志 通过 TiDB Operator 部署的 TiDB 各组件默认将日志输出在容器的 stdout 和 stderr 中。可以通过下面的方法查看单个 Pod 的日志: kubectl logs -n ${namespace} ${pod_name} 如果这个 Pod 由多个 Container 组成,

  • 本文向大家介绍svn 查看日志,包括了svn 查看日志的使用技巧和注意事项,需要的朋友参考一下 示例 运行svn log将向您显示所有提交消息,您可能只想查看某些修订。 查看n最新修订: svn log -n 查看特定修订版: svn log -c rXXX 查看受影响的路径: svn log -v -c rXXX

  • 我需要在我的Android应用程序中添加日历视图。我需要用户能够通过点击传统日历中的某一天来选择日期,该日历一次显示一个月,并且用户可以通过一些简单的方式在月份之间导航,例如点击按钮或滑动。我对造型不挑剔。此应用程序在智能手机格式的设备上运行。 当我在堆栈溢出中搜索这个问题时,首先会出现这个问题,它说除非您想编写自己的或使用第三方开放源代码,否则没有这样的东西。但这是4年前的事了。我最近看到过更多