Я пытаюсь преобразовать отметку времени в секундах с 01.01.1970 с часовым смещением часового пояса (т.е. -6) в локальную дату NSD. Вот что у меня есть:
NSInteger startTime = 1312228800;
NStInteger startTimeOffset = -6;
NSDate *startTimeDate = [NSDate dateWithTimeIntervalSince1970:startTime];
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZZ"];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSInteger gmtOffset = [startTimeOffset intValue]*60*60;
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:gmtOffset]];
NSDate *newStartTimeDate = [dateFormatter dateFromString:[dateFormatter stringFromDate:startTimeDate]];
Например, если у меня есть время 1312228800, я получаю 08/01/2011 20:00 в GMT 0. Фактическое время начала - 08/01/2011 14:00 в GMT -6. Однако локально на устройстве, если я базируюсь в EST, startTime должно быть установлено на 01.08.2011 16:00 GMT -4.
Однако я просто получаю тот же стартовый тайм без учета смещения, которое в приведенном выше примере 01.08.2011 20:00.
Есть идеи, где я ошибаюсь, есть ощущение, что это как-то связано с setDateFormat: аргумент?
1010 * ТНХ *