假设我有一个时间点,表示为

NSDate* now = [NSDate date];

例如: 2012-11-07 13:44:55 +0000 (设备的本地时间)

我也有很多国家
每个国家都有一个名称和地理坐标(对数,纬度)

例如:英格兰,51.5,-0.116667

问:
如何计算上述日期时间并将其转换为特定国家/地区的当前等值时间?

(作为一个补充说明,我宁愿拥有一些本地内容,而不是调用外部API)

最佳答案

获取可用的时区列表,

[NSTimeZone abbreviationDictionary]

这将返回此类信息,
EST = "America/New_York";
GMT = GMT;
GST = "Asia/Dubai";
HKT = "Asia/Hong_Kong";
HST = "Pacific/Honolulu";
ICT = "Asia/Bangkok";
IRST = "Asia/Tehran";
IST = "Asia/Calcutta";
JST = "Asia/Tokyo";
KST = "Asia/Seoul";
MDT = "America/Denver";
MSD = "Europe/Moscow";
MSK = "Europe/Moscow";

现在,使用此时区缩写键,例如莫斯科的MSD,以获取从GMT偏移莫斯科时区的秒数。
NSInteger no_of_seconds = [[NSTimeZone timeZoneWithAbbreviation:@"MSD"] secondsFromGMT];

现在可以将“no_of_seconds”添加到当前日期,以获取所需位置的日期,在这种情况下为莫斯科,
[NSDate dateWithTimeIntervalSinceNow:no_of_seconds]

09-16 05:54