NSDate更改时区

我正在写一个涉及时区的应用程序。 我想抓住用户的设备时间,让我们打电话给datedateA ,我有一个总是在EDT时区( dateB )的目标date。

我想得到两个date之间的差异,并显示用户,但在dateB的时区。

例如:
用户设备时间是上午07:30 PDT,而dateB是上午11:00 EDT。
所以时差将是30分钟。

我的algorithm是:
1)获取用户设备时间
2)转换为EDT
3)抓住dateAdateB之间的时间差

我的问题是,我得到用户的设备时间[NSDate date] ,并通过与时区EDT的DateFormatter 。 时间不会改变。

编辑::

  NSDate *localDate = [NSDate date]; //this will have 7:30AM PDT NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"EDT"]]; NSString *convertedTimeString = [dateFormatter stringFromDate:localDate]; 

EDT如何转换时间string不包含10:30 AM? 我究竟做错了什么?

NSDate以时区中性方式存储。 NSDateFormatter使用- [NSDateFormatter setTimeZone:]实际为给定的时区格式化。 如果你想从NSDate一个string,还有- [NSDate descriptionWithCalendarFormat:timeZone:locale:] ,但通常使用NSDateFormatter会更好。