У меня была точно такая же проблема. Я хранил все даты в базе данных в GMT timeZone со смещениями (отдельно). Мое приложение использует пользовательский часовой пояс с самого начала его запуска (GMT). Когда я хотел использовать эти даты при экспорте событий в календарь, я видел неправильные даты начала и окончания. Что помогло мне решить проблему, так это сначала преобразовать даты, которые я сохранил в базе данных, в системный часовой пояс, используя следующий метод преобразования (см. Ниже). Такая преобразованная дата, передаваемая в EKEventEditViewController, тогда правильно отображала даты. Надеюсь, это тоже решит вашу проблему.
+ (NSDate *) convertToSystemTimeZone:(NSDate*)sourceDate {
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease];
return destinationDate; }