我正在添加一个具有NSDate值的事件
“2017-04-25 15:00:00 +0000”
根据我的时区,它是2017-04-25 08:40 PM。
我从函数中获取NSDate值。
NSString *strDateTime = @"Tuesday, 25 Apr 2017 08:30 PM";
NSDateFormatter *formatterLocal = [[NSDateFormatter alloc] init];
[formatterLocal setTimeZone:[NSTimeZone systemTimeZone]];
[formatterLocal setDateFormat:@"EEEE, dd MMM yyyy hh:mm a"];
NSDate *dateAdd = [formatterLocal dateFromString:strDateTime];
当我检查提醒应用程序时,它显示的日期为25/04 / 17,3:00 PM。虽然它应该是25/04 / 17,8:00 PM。
任何人都可以帮助我解决这个问题!
我已经检查了Get wrong time when adding an event to default calendar in iPhone
答案 0 :(得分:0)
我抓住了我的错误。
我在“dueDateComponents”中设置了错误的时区。
以下是我的代码。
EKReminder *reminder = [EKReminder reminderWithEventStore:self.eventStore];
reminder.dueDateComponents = [self dateComponentsForDefaultDueDate];
- (NSDateComponents *)dateComponentsForDefaultDueDate {
/*
Changing date components
*/
NSCalendar *cal = [NSCalendar currentCalendar];
//[cal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDateComponents *components = [cal components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear |NSCalendarUnitHour | NSCalendarUnitMinute fromDate:[NSDate dateWithTimeIntervalSince1970:[_dictData[@"start"] longLongValue]]];
components.hour = [components hour];
components.minute = [components minute];
return components;
}
我刚评论过
// [cal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@“GMT”]];
愚蠢的错误:p