Время по Гринвичу в местное время с переходом на летнее время

С сервера яПолучив структуру времени по Гринвичу (определенную пользователем структуру), используя которую я хочу преобразовать ее в местное время, я сделал это, заполнив NSDatecomponent полученной структурой, а затем использовал форматирование даты, чтобы получить из нее дату, все работает хорошо, кроме одного случая. Если время по Гринвичу после 3 ноября (Летнее время изменение в США) форматер производит разницу во времени 1 час.

Например: если предполагаемое время - 3 ноября, 4 вечера, после перевода из GMT в местное время, то есть 3 ноября, 3 вечера.

Есть идеи, как этого избежать.

Редактировать:

   // Selected Dates
   NSDateComponents *sel_date = [[NSDateComponents alloc]init];
    sel_date.second = sch_detail.sel_dates.seconds;
    sel_date.minute = sch_detail.sel_dates.mins;

    sel_date.hour   = sch_detail.sel_dates.hours;
    sel_date.day    = sch_detail.sel_dates.date;
    sel_date.month  = sch_detail.sel_dates.month;
    sel_date.year   = sch_detail.sel_dates.year;
    sel_date.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];



    // Get the Date format.
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    [gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

    // Start_date formatter.
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MMM dd, yyyy hh:mm a"];
   [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];

   NSDate *strt_date_loc = [gregorian dateFromComponents:sel_date];


   // Get date string.
   NSString *sel_date_time = [dateFormatter stringFromDate: strt_date_loc];+

Строка sel_date_time на один час меньше, чем должна быть ..

Журнал :

strt_date_loc = 2013-11-30 06:56:00 +0000

sel_date_time = 29 ноября 2013 г. 22:56 (но должно быть 23:56)

Часовой пояс: Пало-Альто (США)

Конвертация из локальной в gmt:

- (NSDateComponents*) convert_to_gmt_time : (NSDate*) date
{
    NSDate *localDate = date;
    NSTimeInterval timeZoneOffset = [[NSTimeZone defaultTimeZone] secondsFromGMT];
    NSTimeInterval gmtTimeInterval = [localDate timeIntervalSinceReferenceDate] - timeZoneOffset;
    NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval];

    NSDateComponents *date_comp = [[NSCalendar currentCalendar] components: NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:gmtDate];

    return date_comp;
}

Thanx.

Ответы на вопрос(1)

Ваш ответ на вопрос