如何将时区偏移缩写转换为官方时区标识符?

joh*_*ieb 4 iphone cocoa-touch objective-c ios

当我调用NSTimeZone的缩写方法时,它返回GMT-07:00.然后,当我使用此值查找时区名称或(时区标识符)时,它将返回nil.

我需要检索官方时区标识符,例如America/Los_Angeles.因此,如何将时区偏移缩写(例如GMT-07:00)转换为官方时区标识符?

这是我的代码:

NSTimeZone* localTimeZone = [NSTimeZone localTimeZone];
NSString* localAbbreviation = [localTimeZone abbreviation];
NSDictionary* abbreviationDictionary = [NSTimeZone abbreviationDictionary];
NSString* timeZoneID = 
[abbreviationDictionary objectForKey:localAbbreviation]; //should return 'America/Los_Angeles' if the abbreviation is ‘PDT’
Run Code Online (Sandbox Code Playgroud)

Can*_*Can 6

(我改写了我的回复,之前我误解了这个问题).

这是一个如何从缩写转换timeZone的示例:

NSTimeZone* localTimeZone = [NSTimeZone localTimeZone];
NSString* localAbbreviation = [localTimeZone abbreviation];
Run Code Online (Sandbox Code Playgroud)

要从localAbbreviation转换回来,只需要重新创建timeZone:

NSTimeZone* timeZoneFromAbbreviation = [NStimeZone timeZoneWithAbbreviation:abbreviation];
NSString* timeZoneIdentifier = timeZoneAbbreviation.name;

NSLog(@"Identifier: %@", timeZoneIdentifier); // Outputs America/Santiago for me.
Run Code Online (Sandbox Code Playgroud)

你确定缩写是"GMT-07:00"吗?我的返回"CLT",而非GMT抵消.