NSDate更改时区
我正在写一个涉及时区的应用程序。 我想抓住用户的设备时间,让我们打电话给datedateA
,我有一个总是在EDT时区( dateB
)的目标date。
我想得到两个date之间的差异,并显示用户,但在dateB
的时区。
例如:
用户设备时间是上午07:30 PDT,而dateB
是上午11:00 EDT。
所以时差将是30分钟。
我的algorithm是:
1)获取用户设备时间
2)转换为EDT
3)抓住dateA
和dateB
之间的时间差
我的问题是,我得到用户的设备时间[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
会更好。