在我的应用程序 iPhone 提醒应用程序中添加事件时获取错误日期

Getting wrong date while add event in iPhone Reminder app from my application

我正在添加一个具有 NSDate 值的事件

“2017-04-25 15:00:00 +0000”

根据我的时区,现在是 2017-04-25 08:40 下午。

我正在从一个函数中获取 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 下午的事件。虽然应该是 25/04/17,8:00 下午。

谁能帮我解决这个问题!

我已经检查过了Get wrong time when adding an event to default calendar in iPhone

我刚刚发现我的错误。

我在 "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