Из этого вопроса SO NSDate выражается в разных часовых поясах, то есть в местном часовом поясе (GMT-400) до PST
NSDate always returns relative to GMT
Это не имеет смысла. NSDate просто инкапсулирует абсолютный момент времени (давайте на секунду забудем об относительности) и вообще не имеет понятия часовых поясов. Сказать, что время NSDate относится к GMT, неверно.
Чтобы вывести дату в определенном часовом поясе, вы должны создать экземпляр NSDateFormatter и вызвать setTimeZone: on, чтобы установить часовой пояс. Согласно документам Unicode, строка формата @ "zzz" должна выводить значение часового пояса как "PST".
NSTimeZone *tz = [NSTimeZone timeZoneWithName:@"PST"]; // for PST