我有一个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]];
我的设备的时区设置为'Port Louis,Mauritius'。
我的控制台输出是..
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 :(得分:0)
这是因为“2012-12-19 20:00:00 +0000”(即格林威治标准时间晚上8点)的活动将在午夜时分在Maritius举行。您要求毛里求斯的用户将其添加到他们的日历中,因此它将在设备的当地时区午夜显示活动日期。
如果活动是在毛里求斯晚上8点举行的,那么你原来的时间是不正确的,因为你说的是格林尼治标准时间晚上8点。如果你说这个活动真的发生在格林尼治标准时间晚上8点(毛里求斯的午夜),那么EKEventEditViewController
将根据当地时区午夜显示时间。
如果用户有turned on timezone support,当他们在日历应用中提取事件时,它会显示您在创建偶数时指定的时区。如果他们没有打开时区支持,它只会在当地时区显示(调整开始时间)。
不幸的是,与日历应用程序不同,EKEventEditViewController
似乎不会显示时区,而是在本地时间显示,即使用户已启用时区支持。它似乎不支持此时区功能,即使它们在查看日历时也是正确的。至少该事件与适当的时区信息一起存储。