NSTimezone从timezoneId获得缩写

时间:2013-11-21 20:32:26

标签: ios cocoa-touch timezone

在我的IOS应用程序中,我有一个像“America / Los_Angeles”这样的时区,我希望得到它的缩写“PST”。

我写了以下代码:

NSTimeZone* theTimezone = [NSTimeZone timeZoneWithName:_timezone];
    _timezoneAbbreviation = theTimezone.abbreviation;

我的问题是_timezoneAbbreviation总是返回一个字符串,如“UTC-x”或“UTC + x”,而不是相应的缩写。

如果我查看NSDictionary返回的[NSTimeZone abbreviations],则其中包含正确的缩写(例如PST为“America / Los_Angeles”)。

有什么想法吗?

的Sebastien。

2 个答案:

答案 0 :(得分:8)

abbreviation方法的结果似乎取决于语言环境。如果我将区域格式设置为“美国”,那么您的代码实际上返回“PST”。如果我将区域格式设置为“德国/德国”,则返回“GMT-8”(在iOS模拟器上测试)。

但是

[theTimezone localizedName:NSTimeZoneNameStyleShortStandard
                    locale:[NSLocale localeWithLocaleIdentifier:@"en_US"]]

给出“PST”,与区域格式无关。

(我知道这只是一个部分解决方案。它只返回所需的结果 对于美国时区。但也许它指向了解决的正确方向 问题。)

答案 1 :(得分:0)

直接使用字典。或者创建自己的字典,以便完全控制它。