我正在尝试使用 eventsMatchingPredicate: 从 EKEventStore 的实例中检索一天的所有事件,但正如我所读到的,NSDate 对象默认设置为 GMT 而 EKEventStore 不是。所以我的问题是如何更改 EKEventStore 的时区或调整 NSDate 对象,以使每个时区的时间都不会关闭?
例如,我在格林威治标准时间 -0600 时,在我用于日历 UI 的 TKCalendarMonthView 中单击 1 月 16 日和 17 日会显示两个日期的马丁路德金日。开始时间是 1 月 16 日上午 6 点,结束时间是 1 月 17 日上午 5:59(由于我的时区),而不是从上午 12:00 开始,一直持续到晚上 11:59。用于检索事件的代码如下。
- (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)d {
// Update tableData with event data from date
[tableData removeAllObjects];
NSArray *a = [systemCalendar eventsMatchingPredicate:[systemCalendar predicateForEventsWithStartDate:d endDate:[NSDate dateWithTimeInterval:84600 sinceDate:d] calendars:nil]];
[tableData addObjectsFromArray:a];
[self.eventsTable reloadData];
}