NSDate выражается в разных часовых поясах, т.е. в местном часовом поясе (GMT-400) в PST

Я знаю, как использовать NSTimeZone, чтобы получить смещение для текущего времени в другом часовом поясе. NSDate всегда возвращает относительно GMT, так как я могу получить строку с правильной информацией о часовом поясе? Т.е. я беру текущее время, в котором я нахожусь (в EST), и, используя NSTimeZone, вычитаю 3 часа, необходимые для представления времени в PST. Но все, что я сделал, это вычел 3 часа из времени, которое все еще представлено относительно моего часового пояса. Как я могу заставить NSDateFormatter выплевывать время, используя часовой пояс пункта назначения?

Одна попытка, которую я попробовал, была:

NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
NSTimeZone *tz = [NSTimeZone timeZoneForSecondsFromGMT:(-8 * 3600)]; // for PST
NSDateComponents *dc = [cal components: NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:now];
[cal setTimeZone:tz];
NSDate *newDate = [cal dateFromComponents:dc];

Нет любви. Я мог бы взять отдельные компоненты даты и составить строку, но она не была бы локализуемой.

Связанная проблема:

NSTimeZone *tz = [NSTimeZone timeZoneForSecondsFromGMT:(-8 * 3600)]; // for PST
NSString *abbreviation = [tz abbreviation];
NSString *name = [tz name];

И то и другоеabbreviation а такжеname в конечном итоге возвращаетсяGMT-0800, а не PST, как я ожидал. Так что я даже не смог бы сделать вышеизложенное, если бы захотел. Что я делаю неправильно?

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

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