【发布时间】:2013-08-10 02:04:56
【问题描述】:
我正在编写一个涉及时区的应用程序。我想获取用户的设备时间,我们称之为dateA,我有一个目标日期,它始终处于美国东部时间时区(dateB)。
我想获取两个日期之间的差异并向用户显示,但在dateB 的时区。
例如:
用户设备时间是太平洋夏令时间上午 7:30,dateB 是美国东部夏令时间上午 11:00。
所以时差是 30 分钟。
我的算法是:
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];
convertedTimeString 为什么不包含 EDT 中的 10:30AM? 我做错了什么?
【问题讨论】:
-
日期没有时区,所以如果你用合适的时区形成日期,不用太多转换就可以计算出差异。