如果我只有城市名称,如曼谷或东京 ,我怎么能提供一个时区参数[NSTimeZone timeZoneWithName:@"Asia/Tokyo"]
在那里也有大陆和城市的前斜线?
我已经尝试过[NSTimeZone timeZoneWithName:@"Tokyo"]
这是行不通的。
如果我只有城市名称,如曼谷或东京 ,我怎么能提供一个时区参数[NSTimeZone timeZoneWithName:@"Asia/Tokyo"]
在那里也有大陆和城市的前斜线?
我已经尝试过[NSTimeZone timeZoneWithName:@"Tokyo"]
这是行不通的。
感谢您的答案的家伙,但它看起来像那些城市的名称只是Rails的格式“的ActiveSupport :: TimeZone的”使用。 所以我只是把它映射回。 映射在这里- > http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
它从导轨“的ActiveSupport ::时区”格式的时区映射到另一个格式的iOS应用(例如,“国际日期变更线西” =>“太平洋/中途岛”,“中途岛” =>“太平洋/中途岛”,“萨摩亚” => “太平洋/帕果帕果”,...)。
我已经创建plist文件中包含可容易地用于映射的NSDictionary属性。
编辑: 一个更新版本 (与使用示例)为Rails 3.2(感谢RJ Regenold!)
你可以看到所有时区名称的列表。
NSLog(@"%@", [NSTimeZone knownTimeZoneNames]);
希望这将是对你有帮助。
如果他们都在亚洲,为什么不使用这样的:
MYCITY=Tokyo
[NSTimeZone timeZoneWithName:@"Asia/$MYCITY"]
如果你需要更多的城市和时区,你可以创建基于位于/ usr / share / zoneinfo中找到的所有时区一个静态文本列表文件。
创建一个具有以下文本文件“timezones.by.city.txt”。 (这里截断。)
"Asia/Aden"
"Asia/Almaty"
"Asia/Amman"
"Asia/Anadyr"
"Asia/Aqtau"
"Asia/Aqtobe"
"Asia/Ashgabat"
"Asia/Ashkhabad"
"Asia/Baghdad"
"Asia/Bahrain"
"Asia/Baku"
"Asia/Bangkok"
"Asia/Beirut"
"Asia/Bishkek"
... etc.
"US/Alaska"
"US/Aleutian"
"US/Arizona"
"US/Central"
"US/Eastern"
"US/East-Indiana"
"US/Hawaii"
"US/Indiana-Starke"
"US/Michigan"
"US/Mountain"
"US/Pacific"
"US/Pacific-New"
"US/Samoa"
然后:
MYCITY=Bangkok
MYTZ=`grep "$MYCITY" ./timezones.by.city.txt`
[df setTimeZone:[NSTimeZone timeZoneWithName:@"$MYTZ"]]
NSArray *zones = [NSTimeZone knownTimeZoneNames];
它返回所有设置的系统支持timeszones的。
你必须setTime
区像下面,你已经尝试过。
[NSTimeZone timeZoneWithName:@"Asia/Tokyo"];
您可能会发现从数据集和/或API http://www.geonames.org/在解决这类问题非常有用。 他们有正确的奥尔森时区(这是什么“亚洲/东京”的叫法)的广大地区,你可以下载和自己缠斗的数据,或者使用他们的API来获取你所需要的。
NSString * TimeZoneName=[[NSTimeZone localTimeZone]name];