2

我有一个 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.

4

1 回答 1

0

这是因为“2012-12-19 20:00:00 +0000”(即格林威治标准时间晚上 8 点)的事件将在午夜在马里蒂斯举行。您要求毛里求斯的用户将其添加到他们的日历中,因此它将在设备的本地时区午夜显示活动日期。

如果事件发生在毛里求斯晚上 8 点,那么您的原始时间不正确,因为您说的是格林威治标准时间晚上 8 点。如果您说该事件确实发生在格林威治标准时间晚上 8 点(毛里求斯的午夜),那么EKEventEditViewController它只会根据当地时区午夜显示时间。

如果用户打开了时区支持,当他们在日历应用中拉起事件时,它将显示您在创建事件时指定的时区。如果他们没有打开时区支持,它只会在本地时区显示(调整开始时间)。

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

于 2012-12-17T18:33:30.130 回答