ios – NSDate更改时区

我正在写一个涉及时区的应用程序.我想抓住用户的设备时间,让我们调用dateA,并且我的目标日期始终在EDT时区(dateB).

我希望得到两个日期之间的差异并显示用户,但是在dateB的时区.

例如:
用户设备时间是PDT上午07:30,而日期B是美国东部时间上午11:00.
所以时间差是30分钟.

我的算法是:
1)获取用户设备时间
2)转换为EDT
3)抓住dateA和dateB之间的时差

我的问题是,在我获得用户的设备时间[NSDate日期]后,并通过带有时区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];

为什么convertTimeString在EDT中不包含10:30 AM?
我究竟做错了什么?

最佳答案 NSDate以时区中立的方式存储.由NSDateFormatter实际使用
-[NSDateFormatter setTimeZone:]为给定时区格式化.如果你想要一个来自NSDate的字符串,那么也有
-[NSDate descriptionWithCalendarFormat:timeZone:locale:],但通常更好的是使用NSDateFormatter.

点赞