0

I am new with EKEventKit and I am trying to create an event in calendar using EKEvent. It works fine but after saving the event when I check again the event date it gets one day earlier.

I am writing my code here with output. Please have a look

EKEventStore *eventStore = [[EKEventStore alloc]init];
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
        EKEvent *event = [EKEvent eventWithEventStore:eventStore];

        // set Event Title and Notes
        event.title = @"My New Event";
        event.notes = @"New event notes are added by azeem";

        // set Event Start and End date here
        NSLog(@"before saving Date: %@",[NSDate date]);
        event.startDate = [NSDate date];
        event.endDate =[NSDate date];

        // set Evet other Properties here
        event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
        event.calendar = [eventStore defaultCalendarForNewEvents];
        event.allDay = YES;

        [eventStore saveEvent:event span:EKSpanThisEvent error:&error];
        NSLog(@"After saving Date: %@",event.startDate);

OUTPUT ::

Before Saving Date : 2013-04-10 08:00:40 +0000
After Saving Date:   2013-04-09 00:00:00 +0000

We can see here that there is 1 Day before. but they should be same.

I hope I am very much clear with my question, but still if any question, you can ask me.

thanks in anticipation.

4

2 回答 2

1

为什么要取消时区?如果您的申请是针对不同国家/地区的,那么您不应该这样做。

event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

是的,打印的 NSDate 与将添加到 EvencCalendar 的日期不同 - 没关系(因为 GMT +x 等)。添加日期将等于您的开始日期。

于 2013-04-10T08:58:45.287 回答
0

我无法重现您的问题... [NSDate date] 会提前 1 天返回日期似乎确实很奇怪。你确定不是 event.startDate 和 event.endDate 得到改变吗?我通过以下日志获得了您的描述行为:

event.startDate = [NSDate date];
NSLog(@"before saving Date: %@",event.startDate);
event.endDate =[NSDate date];

// set Evet other Properties here
event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:10];
event.calendar = [eventStore defaultCalendarForNewEvents];
event.allDay = YES;

[eventStore saveEvent:event span:EKSpanThisEvent error:&error];
NSLog(@"After saving Date: %@",event.startDate);

这是由于时区的设置。我建议使用 [NSTimeZone systemTimeZone] 或 [NSTimeZone localTimeZone] 来调整您的用户设置,然后让奇迹发生 :-) 您的活动日期将根据您的用户观点设置为当前日期。

干杯,

于 2013-04-10T08:51:38.610 回答