Android日历视图+日历
我目前正在尝试这样做,当我在日历视图中选择一天时,该天的所有事件都会列出。我很难让它显示一天中的所有事件,看起来它在上午12点到11点59分不起作用?。这里是我目前拥有的Android日历视图+日历,android,android-calendar,calendarview,Android,Android Calendar,Calendarview,我目前正在尝试这样做,当我在日历视图中选择一天时,该天的所有事件都会列出。我很难让它显示一天中的所有事件,看起来它在上午12点到11点59分不起作用?。这里是我目前拥有的 calenderView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView view, int yea
calenderView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
getEvents(year, month, dayOfMonth);
}
});
及
如果我有12am-11:59am的事件1和12pm-11:59pm的事件2,则只会列出事件2。您可以尝试以毫秒为单位记录实际时间并进行比较。Calendar.getInstance将为您的本地时区设置日历,因此您将获得从午夜到当地时间23:59之间开始的所有事件。您确定数据库也都在本地时间,而不是UTC或其他时间吗?只是一个猜测。您可以尝试以毫秒为单位记录实际时间并进行比较。Calendar.getInstance将为您的本地时区设置日历,因此您将获得从午夜到当地时间23:59之间开始的所有事件。您确定数据库也都在本地时间,而不是UTC或其他时间吗?只是猜测而已
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("-----------------------");
}