2013-04-10 145 views
0

我是新的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天。但它們應該是一樣的。

我希望我對我的問題非常清楚,但如果有任何問題,可以問我。

感謝預期。

回答

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]來調整您的用戶設置,然後讓魔術發生:-)根據用戶的觀點,您的活動日期將設置爲當前日期。

乾杯,

1

爲什麼你廢掉時區?如果你的申請是針對不同的國家,那麼你不應該那樣做。

event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 

而且是印刷的NSDate不同於將被添加到EvencCalendar日期 - 這是確定(因爲GMT的+ X等)。添加的日期將等於您的開始日期。

相關問題