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)
(我改写了我的回复,之前我误解了这个问题).
这是一个如何从缩写转换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抵消.
| 归档时间: |
|
| 查看次数: |
5883 次 |
| 最近记录: |