iPhone NSTimeZone:localTimeZone混乱
-
20-09-2019 - |
题
据我所知,称
NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);
给你装置的本地时区。那是什么让我为“美/中环” ,我找不到任何地方的缩写的列表中的 [NSTimeZone abbreviationDictionary] 或时区列表在的 [NSTimeZone knownTimeZoneNames] 强>名。这哪里是一个来自哪里?我需要在当前设备时区传递到Rails应用程序,它可以理解如“澳大利亚/悉尼” 或“美国/芝加哥” ,但不是的东西“美/中环”。
我如何采取什么localTimeZone是给我,并将其转换为一个字符串,Rails可以理解(即knownTimeZoneNames任何时区,这是应该以将所有时区名称系统知道约?)
解决方案
您很可能使用ActiveSupport::TimeWithZone
,而不必要求tzinfo
宝石:
$ irb -rrubygems -ractivesupport -rtzinfo
>> Time.send(:get_zone, "US/Central").now
=> Tue, 17 Nov 2009 04:27:23 CST -06:00
如果您不需要tzinfo
,你将只能得到时区的一个子集,这是相当无用的。
修改的:只是为了避免混淆,我使用的私有API Time#get_zone
的原因是因为那是什么东西被使用,当你调用Time#zone=
幕后。如果你不需要tzinfo
,呼吁Time.send(:get_zone, "US/Central")
返回nil
。
其他提示
您是否获得从模拟器内? 如果是什么呢,如果你从一个终端运行此命令的回报?点击 $ systemsetup -gettimezone
在的Mac OS 10.5时区设置GUI将设置时区的美国/ *。如果手动设置它从控制台可以将其设置于预期的时区之一。
运行此获得有效的列表,并注意美国/中央不在其中。结果 $ systemsetup -listtimezones
运行此将其设置为美国/芝加哥,点击 $ systemsetup -settimezone美国/芝加哥