EKEventStore:事件不会仅从开始日期添加到设备日历中
EKEventStore : Event is not adding in Device Calendar from Start Date only
我的字符串日期是 08-17-2016 10:30。我正在通过此代码将其转换为日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM-dd-yyyy HH:mm"];
NSDate *dateFromString= [dateFormatter dateFromString:eventDate];
NSLog(@"Date :%@",dateFromString);
我收到的 nslog 为 2016-08-17 05:00:00 +0000。但我的时间是 10:30。
我不想给出 结束日期 因为我希望它一直存在直到用户删除它。
- (void)addEventinCalendar:(NSString *)eventTitle andEventDate:(NSString *)eventDate
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM-dd-yyyy HH:mm"];
NSDate *dateFromString;
dateFromString = [dateFormatter dateFromString:eventDate];
NSLog(@"Date :%@",dateFromString);
//Date :2016-08-17 05:00:00 +0000
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title = eventTitle;
event.startDate = dateFromString;
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
}
actually your Date is GMT format, the time is -5.30 hrs so we need to add the local timeZone and check
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; // set date format as per your String
NSDate *dateFromString= [dateFormatter dateFromString:@"2016-08-17 10:30"];
NSTimeInterval timeZoneSeconds = [[NSTimeZone localTimeZone] secondsFromGMT];
NSDate *dateInLocalTimezone = [dateFromString dateByAddingTimeInterval:timeZoneSeconds];
NSLog(@"Date :%@",dateInLocalTimezone);
输出
更新答案
试试这个
EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) return;
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = @"Imran Verified";
event.startDate = [NSDate date]; // today
event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; // Duration 1 hr
[event setCalendar:[store defaultCalendarForNewEvents]];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
NSString *savedEventId = event.eventIdentifier; // Store this so you can access this event later
}];
我的字符串日期是 08-17-2016 10:30。我正在通过此代码将其转换为日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM-dd-yyyy HH:mm"];
NSDate *dateFromString= [dateFormatter dateFromString:eventDate];
NSLog(@"Date :%@",dateFromString);
我收到的 nslog 为 2016-08-17 05:00:00 +0000。但我的时间是 10:30。 我不想给出 结束日期 因为我希望它一直存在直到用户删除它。
- (void)addEventinCalendar:(NSString *)eventTitle andEventDate:(NSString *)eventDate
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM-dd-yyyy HH:mm"];
NSDate *dateFromString;
dateFromString = [dateFormatter dateFromString:eventDate];
NSLog(@"Date :%@",dateFromString);
//Date :2016-08-17 05:00:00 +0000
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title = eventTitle;
event.startDate = dateFromString;
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
}
actually your Date is GMT format, the time is -5.30 hrs so we need to add the local timeZone and check
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; // set date format as per your String
NSDate *dateFromString= [dateFormatter dateFromString:@"2016-08-17 10:30"];
NSTimeInterval timeZoneSeconds = [[NSTimeZone localTimeZone] secondsFromGMT];
NSDate *dateInLocalTimezone = [dateFromString dateByAddingTimeInterval:timeZoneSeconds];
NSLog(@"Date :%@",dateInLocalTimezone);
输出
更新答案
试试这个
EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) return;
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = @"Imran Verified";
event.startDate = [NSDate date]; // today
event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; // Duration 1 hr
[event setCalendar:[store defaultCalendarForNewEvents]];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
NSString *savedEventId = event.eventIdentifier; // Store this so you can access this event later
}];