日历中的事件日期在保存后一天设置

问题描述:

我是新的EKEventKit,我正在尝试使用EKEvent在日历中创建事件。它工作正常,但保存事件后,当我再次检查它提前一天的事件日期。日历中的事件日期在保存后一天设置

我在这里输出我的代码。请看看

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 

我们可以看到这里有前1天。但它们应该是一样的。

我希望我对我的问题非常清楚,但如果有任何问题,可以问我。

感谢预期。

我无法重现您的问题... [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]来调整您的用户设置,然后让魔术发生:-)根据用户的观点,您的活动日期将设置为当前日期。

干杯,

为什么你废掉时区?如果你的申请是针对不同的国家,那么你不应该那样做。

event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 

而且是印刷的NSDate不同于将被添加到EvencCalendar日期 - 这是确定(因为GMT的+ X等)。添加的日期将等于您的开始日期。