从我的应用程序在iPhone Reminder应用程序中添加事件时出错日期

时间:2017-04-10 11:39:13

标签: objective-c nsdate ekeventstore ekeventkit ekreminder

我正在添加一个具有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

1 个答案:

答案 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