据我了解,
NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);
为您提供设备的本地时区。它给我的是“美国/中部”,在[NSTimeZone abbreviationDictionary]的缩写列表中或[NSTimeZoneknownTimeZoneNames]的时区名称列表中都找不到。这是哪儿来的?我需要将当前设备的时区传递给Rails应用,并且它可以理解“澳大利亚/悉尼”或“美国/芝加哥”之类的内容,但不能理解“美国/中部”的事物。
如何获取localTimeZone给我的内容并将其转换为Rails可以理解的字符串(即,knownTimeZoneNames中的任何时区,应该是系统知道的所有时区名称?)
最佳答案
您可能会使用ActiveSupport::TimeWithZone
而不需要tzinfo
gem:
$ irb -rrubygems -ractivesupport -rtzinfo
>> Time.send(:get_zone, "US/Central").now
=> Tue, 17 Nov 2009 04:27:23 CST -06:00
如果您不需要
tzinfo
,则只会得到一个相当无用的时区子集。编辑:为了避免混淆,我使用专用的
Time#get_zone
API的原因是因为这就是调用Time#zone=
时在幕后使用的东西。如果不需要tzinfo
,则调用Time.send(:get_zone, "US/Central")
将返回nil
。关于iphone - iPhone NSTimeZone:localTimeZone困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1736699/