title: NSDate expressed in different time zones, i.e. local time zone (GMT-400) to PST
body: <p>I know how to use NSTimeZone to derive the offset for the current time in another time zone. NSDate always returns relative to GMT, so how do I derive a string with the proper time zone information? i.e. I take the current time where I am (in EST) and using NSTimeZone end up subtracting the 3 hours necessary to represent the time in PST. But all I've done is subtract 3 hours from the time which is still represented relative to my time zone. How do I get NSDateFormatter to spit out the time using the destination time zone?</p>
  
  <p>One tack I tried was:</p>
  
  <pre><code>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];
  </code></pre>
  
  <p>No love. I could take the individual date components and compose a string, but it wouldn't be localizable.</p>
  
  <p>A related problem:</p>
  
  <pre><code>NSTimeZone *tz = [NSTimeZone timeZoneForSecondsFromGMT:(-8 * 3600)]; // for PST
  NSString *abbreviation = [tz abbreviation];
  NSString *name = [tz name];
  </code></pre>
  
  <p>Both <code>abbreviation</code> and <code>name</code> end up returning <code>GMT-0800</code>, not PST as I'd expect. So I couldn't even do the above if I wanted to. What am I doing wrong?</p>