Прежде всего, вы должны знать, что объекты NSDate не хранят ничего, связанного с их локалями или часовыми поясами, и внутренне они по существу представлены в виде количества секунд с первого момента 1 января 2001 года по Гринвичу.
Если вы можете использовать часовой пояс для строки в объекте NSTimezone, просто сделайте следующее, прежде чем выполнять dateFromString:
[dateFormatter setTimeZone:timezoneForString];
, и вы будете установлены.
Если вы не можете получить NSTimezone и все, что у вас есть, это строка «2011-01-19T20: 30: 00-5: 00», то не очень хороший способ попасть в NSTimezone из -5:00, поскольку не всегда существует однозначный способ получить идентификатор часового пояса (например, «America / Los_Angeles») или имя часового пояса (например, «Pacific Daylight Time») из смещения UTC.Поэтому вам придется написать собственный код, чтобы вручную извлечь смещение, сохранить его и добавить к времени до его отображения.