我无法弄清楚如何使用 NSDateFormatter 解析某种日期格式并将其放入 EKEvent 中。目前这是我的代码。我已经请求添加事件的权限,并且从 requestAccessToEntityType:completion 的完成处理程序调用方法:
-(void) performCalendarOperation {
NSString *startString = @"04/28/2013 2:30 PM";
NSString *endString = @"04/28/2013 5:30 PM";
EKEvent *newEvent = [EKEvent eventWithEventStore:self.eventStore];
[newEvent setCalendar:[self.eventStore defaultCalendarForNewEvents]];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MM/dd/yyyy hh:mm a"];
newEvent.startDate = [format dateFromString:startString];
newEvent.endDate = [format dateFromString:endString];
NSLog(@"START:%@\n\nEND:%@\n\n", newEvent.startDate, newEvent.endDate);
}
NSLog 打印以下内容:
开始:2013-04-28 21:30:00 +0000
结束:2013-04-29 00:30:00 +0000
在这种特殊情况下,我希望这是 12 小时的时间
对于这种日期字符串样式,NSDateFormatter 格式字符串似乎是正确的,但由于某种原因,输出不正确。在设置更多属性后,该事件实际上是稍后在代码中添加到日历中的,但这对于这个问题并不重要。
请注意,我在解析 iOS 6.0 之前的日期时从未遇到过这个问题,所以这可能是我没有考虑到的 API 或格式的某些更改的产物?有没有我没有看到的明显错误?
谢谢。