Icalendar 在iOS中显示日历事件详细信息

Icalendar 在iOS中显示日历事件详细信息,icalendar,ios7.1,ekevent,ekeventkit,ekeventstore,Icalendar,Ios7.1,Ekevent,Ekeventkit,Ekeventstore,我使用下面的代码获取日历事件并记录其详细信息。当我尝试记录currenttime、startDate和endDate时,它显示的时间大约为5小时前。我不明白这背后的原因是什么 我把活动时间定在7月30日晚上8点到9点 我的代码: - (NSMutableArray *)fetchEvents { long hour; long minute; NSCalendar *cal=[NSCalendar autoupdatingCurrentCalendar];

我使用下面的代码获取日历事件并记录其详细信息。当我尝试记录currenttime、startDate和endDate时,它显示的时间大约为5小时前。我不明白这背后的原因是什么

我把活动时间定在7月30日晚上8点到9点

我的代码:

- (NSMutableArray *)fetchEvents
{
    long hour;
    long minute;


    NSCalendar *cal=[NSCalendar autoupdatingCurrentCalendar];
    NSTimeZone *tz=[NSTimeZone timeZoneWithName:@"Asia/Kolkata"];
    [cal setTimeZone:tz];

    NSDate *currentTime = [NSDate date];
    NSLog(@"currentTime %@", currentTime);


    NSDateComponents *comp=[cal components:NSHourCalendarUnit|NSMinuteCalendarUnit fromDate:now];
    hour = [comp hour];
    minute =[comp minute];

    NSLog(@"hour %ld", hour);
    NSLog(@"minute %ld", minute);

    //Create the end date components
    NSDateComponents *tomorrowDateComponents = [[NSDateComponents alloc] init];
    tomorrowDateComponents.day = 2;

    NSDate *endDate = [[NSCalendar currentCalendar] dateByAddingComponents:tomorrowDateComponents
                                                                    toDate:startDate
                                                                   options:0];
    // We will only search the default calendar for our events
    NSArray *calendarArray = [NSArray arrayWithObject:self.defaultCalendar];

    // Create the predicate
    NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate
                                                                      endDate:endDate
                                                                    calendars:calendarArray];

    // Fetch all events that match the predicate
    NSMutableArray *events = [NSMutableArray arrayWithArray:[self.eventStore eventsMatchingPredicate:predicate]];
    NSLog(@"events  %@", events);

    [events valueForKey:@"title"];
    [events valueForKey:@"location"];
    [events valueForKey:@"timeZone"];
    [events valueForKey:@"startDate"];
    [events valueForKey:@"endDate"];

    NSLog(@"title  %@", [events valueForKey:@"title"]);
    NSLog(@"location  %@", [events valueForKey:@"location"]);
    NSLog(@"timeZone  %@", [events valueForKey:@"timeZone"]);
    NSLog(@"startDate  %@", [events valueForKey:@"startDate"]);
    NSLog(@"endDate  %@", [events valueForKey:@"endDate"]);

    return events;
}
但当我运行上述代码时,我得到了以下输出

2014-07-29 14:13:57.979 iCalEvents[806:60b]当前时间2014-07-29 08:43:57+0000 2014-07-29 14:13:57.980 i水平[806:60b]小时14 2014-07-29 14:13:57.980 i级别[806:60b]第13分钟 2014-07-29 14:13:57.981 iCalEvents[806:60b]开始日期2014-07-29 08:43:57+0000 2014-07-29 14:13:57.990 iCalvents[806:60b]事件( “EKEvent\n{\n\t EKEvent\n{\t title=\t\tMyEvent;\n\t location=\t(null);\n\t calendar=\tkCalendar{title=calendar;type=Local;allowsModify=YES;color=\n\t alarms=\t\t\t(null);\n\t URL=\t\t\t(null);\n\t lastModified=2014-07-29 08:38:32+0000;\n\t时区=\t塔西亚/加尔各答GMT(格林威治标准时间+5:30)偏移量19800\n}”;\n\t location=\t(null);\n\tstartDate=\t2014-07-30 14:30:00+0000;\n\tendDate=\t\t2014-07-30 15:30:00+0000;\n\t全天=\t\t\t浮动=\t0;\n\t重复性=\t(null);\n\t与会者=\t(null)\n ) 2014-07-29 14:13:57.990 iCalvents[806:60b]标题( MyEvent ) 2014-07-29 14:13:57.991 iCalvents[806:60b]位置( "" ) 2014-07-29 14:13:57.991 iCalEvents[806:60b]时区( “亚洲/加尔各答(格林尼治标准时间+5:30)偏移量19800” ) 2014-07-29 14:13:57.992 iCalEvents[806:60b]开始日期( “2014-07-30 14:30:00+0000” ) 2014-07-29 14:13:57.992 iCalEvents[806:60b]结束日期( “2014-07-30 15:30:00+0000”
)

以GMT+5:30显示时区时间。加上5小时30分钟的电流或给定时间