2012-12-17 19 views
2

我有我有EKEventEditViewController用在我的应用程序添加日历事件EKEvent。即使日期是准确的,我也会得到错误的时间。有人可以帮我找出我在做什么错在这里..EKEventEditViewController开始日期不正确

这是代码生成事件..

EKEvent *addEvent=[EKEvent eventWithEventStore:eventStore]; 
addEvent.title=event.title; 
NSLog(@"Saving Event... %@",[event.date description]); 
addEvent.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 
addEvent.startDate= event.date; 
NSLog(@"Event Date... %@",[addEvent.startDate description]); 
addEvent.endDate=[addEvent.startDate dateByAddingTimeInterval:600]; 
[addEvent setCalendar:[eventStore defaultCalendarForNewEvents]]; 
addEvent.alarms=[NSArray arrayWithObject:[EKAlarm alarmWithRelativeOffset:-3600]]; 

我的设备的时区设置为“毛里求斯路易港”。

我的控制台输出..

Saving Event... 2012-12-19 20:00:00 +0000 
Event Date... 2012-12-19 20:00:00 +0000 

但在EKEventEditViewController,我开始日期显示Thu,20 Dec 0:00.

+0

是您在格林尼治标准时间晚上8点(GMT + 4)事件或晚上8点MUT? – Rob

回答

0

这是因为在“2012年12月19日20:00:00 +0000事件“(即格林威治标准时间晚上8点)将于午夜在Maritius举行。你问毛里求斯用户将其添加到自己的日历,所以它会显示设备的本地时区的事件日期,午夜。

如果该事件是在毛里求斯发生在晚上8点,那么你的原来的时间是不正确的,因为你说这是晚上8点GMT。如果你说该事件确实发生在晚上8点GMT(毛里求斯午夜),那么EKEventEditViewController只是要根据当地时区,半夜来显示时间。

如果用户有turned on timezone support,当他们在日历应用程序中拉起事件时,它将显示您在创建偶数时指定的时区。如果他们没有打开时区支持,它只是显示它在本地时区(调整的开始时间,因为它应该)。

不幸的是,与日历应用程序不同,看起来EKEventEditViewController不会显示时区,而是在本地时间显示它,即使用户已打开时区支持。它似乎不支持此时区功能,即使它们在查看日历时是正确的。至少该事件与适当的时区信息一起存储。