我在iPhone应用程序中向日历添加事件时遇到了一些麻烦。
我正在使用代码:
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title = self.event.eventTitle;
event.startDate = self.event.startDate;
event.endDate = self.event.endDate;
event.notes = self.event.description;
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
将event
添加到我的日历中就好了。问题是我的时区显然是关闭的。例如,self.event.startdate
在调试器中输出为012-05-11 20:45:00 +0000
,这是正确的。
但是,当我查看我的日历时,该活动是在下午4:45 (不是 20:45 或 8:45 PM 时添加的应该是)。
当我使用po事件输出整个事件对象时,我得到:
EKEvent <0xf853320> {EKEvent <0xf853320> {title = Tuesday Night Lights!; location = (null); calendar = (null); alarms = (null); URL = (null); lastModified = (null); timeZone = EST (GMT-05:00) offset -18000}; location = (null); startDate = 2012-05-11 20:45:00 +0000; endDate = 2012-05-11 21:45:00 +0000; allDay = 0; floating = 0; recurrence = (null); attendees = (null)}
此处startDate
也正确读取。我位于 EST 时区(就像我的手机一样),所以如何才能让我的代码在晚上8:45将事件添加到我的日历中?
任何想法都会非常有用!
答案 0 :(得分:0)
在正确的时间添加事件。这只是用正确的时区校正来显示时间的问题。我发现这解决了我的问题:
而不是像这样写:
NSLog(@"startDate: %@", [startDate description]);
像这样写:
NSLog(@"startDate: %@", [startDate descriptionWithLocale:[NSLocale currentLocale]]);
希望这可以帮助您解决问题。