2015-07-27 3 views
1

В настоящее время я пытаюсь сделать так, что, когда я выбираю день в CalendarView, перечислены все события за этот день. У меня возникли проблемы с тем, чтобы он отображал все события за один день (похоже, что он не работает в 12 утра 11:59 утра?). Вот это то, что у меня есть сейчас.Android CalendarView + Календарь

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("-----------------------"); 

} 

Используя это, если у меня есть event1 от 12 am-11:59am и event2 от 12 pm-11:59pm, только event2 будут перечислены.

ответ

0

Вы можете попробовать зарегистрировать фактическое время в миллисекундах и сравнить. Calendar.getInstance() предоставит вам календарь, установленный в ваш местный часовой пояс, поэтому вы получаете все события, которые начинаются между полуночью и 23:59 по местному времени. Вы уверены, что база данных также находится в местном масштабе (а не в UTC или что-то еще)? Просто догадка.

 Смежные вопросы

  • Нет связанных вопросов^_^