2

假设我有一个时间点,由

NSDate* now = [NSDate date];

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

我还有一系列国家,每个国家都有一个名字,地理坐标(log,lat)

例如:英格兰,51.5,-0.116667

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

(作为旁注,我宁愿有一些本地的而不是调用外部 API)

4

1 回答 1

3

获取可用时区列表,

[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]
于 2012-11-30T06:28:57.750 回答