如何使用NSTimeZone -timeZoneWithName:从滑轨的ActiveSupport

2019-06-24 02:06发布

如果我只有城市名称,如曼谷东京 ,我怎么能提供一个时区参数[NSTimeZone timeZoneWithName:@"Asia/Tokyo"]在那里也有大陆和城市的前斜线?

我已经尝试过[NSTimeZone timeZoneWithName:@"Tokyo"]这是行不通的。

Answer 1:

感谢您的答案的家伙,但它看起来像那些城市的名称只是Rails的格式“的ActiveSupport :: TimeZone的”使用。 所以我只是把它映射回。 映射在这里- > http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html

它从导轨“的ActiveSupport ::时区”格式的时区映射到另一个格式的iOS应用(例如,“国际日期变更线西” =>“太平洋/中途岛”,“中途岛” =>“太平洋/中途岛”,“萨摩亚” => “太平洋/帕果帕果”,...)。

我已经创建plist文件中包含可容易地用于映射的NSDictionary属性。

编辑: 一个更新版本 (与使用示例)为Rails 3.2(感谢RJ Regenold!)



Answer 2:

你可以看到所有时区名称的列表。

NSLog(@"%@", [NSTimeZone knownTimeZoneNames]);

希望这将是对你有帮助。



Answer 3:

如果他们都在亚洲,为什么不使用这样的:

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"]]


Answer 4:

NSArray *zones = [NSTimeZone knownTimeZoneNames];

它返回所有设置的系统支持timeszones的。

你必须setTime区像下面,你已经尝试过。

[NSTimeZone timeZoneWithName:@"Asia/Tokyo"];


Answer 5:

您可能会发现从数据集和/或API http://www.geonames.org/在解决这类问题非常有用。 他们有正确的奥尔森时区(这是什么“亚洲/东京”的叫法)的广大地区,你可以下载和自己缠斗的数据,或者使用他们的API来获取你所需要的。



Answer 6:

NSString * TimeZoneName=[[NSTimeZone localTimeZone]name];


文章来源: How to use NSTimeZone -timeZoneWithName: with a city name from Rails ActiveSupport?