据我所知,称

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美国/芝加哥

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top