我正试图在任何地方找到答案,包括StackOverflow ..我在从字符串添加时间事件时遇到问题,如下所示:2014-12-31T19:00:00-06:00。我顺便从XML解析这个。其余的代码,包括标签等工作正常。
所以这是我在日历中添加新事件的代码(我试图将'dateFromString'添加为名称,当前时间检查并通过):
EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) { return; }
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = tempNameOfEvent;
event.startDate = dateFromString; //here is a NSDate but incorrectly formatted
event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; //set 1 hour meeting
[event setCalendar:[store defaultCalendarForNewEvents]];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
}];
来自Programmatically add custom event in the iPhone Calendar的代码
那么,我应该如何格式化NSDate以使用EKEventStore?我应该尝试将其添加为“yyyy-MMM-dd HH:mm:ss ZZZ”,看起来像“2007-01-09 17:00:00 +0000”?如何用“-06:00”解析字符串并消除部分? (来自XML的给定时间如下:2014-12-31T19:00:00-06:00)。
答案 0 :(得分:1)
也许你可以使用Google? https://developers.google.com/google-apps/calendar/v3/reference/events/insert 这将是一个好主意,因为您将能够这样做: calendarId string日历标识符。
答案 1 :(得分:0)
您的月份格式错误,应该是' MM',缺少引用' T'并在&x; xxx'之前添加不需要的空格。
使用:yyyy-MM-dd' H&H:mm:ssxxx
请参阅:ICU Formatting Dates and Times
另外:Date Field SymbolTable.
示例:
NSString *ds = @"2014-12-31T19:00:00-06:00";
NSDateFormatter *df = [NSDateFormatter new];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssxxx"];
NSDate *d = [df dateFromString:ds];
NSLog(@"d: %@", d);
输出:
d:2015-01-01 01:00:00 +0000
输出表单只是NSDate
提供的默认显示,如果您希望特定格式使用NSDateFormatter
来创建要显示的字符串。
请注意,显示的日期是UTC格式,因此它在下一年提供的日期。 ; - )
你可能不想消除时区,NSDates
是自2001年1月1日第一个时刻以来的时间,格林尼治标准时间,所以时区是非常必要的,除非你做的事情是非标准的。