Вопрос

Насколько я понимаю, звонок

NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);

дает вам местный часовой пояс устройства.Это дает мне "США/Центральный", и я не могу найти это нигде в списке сокращений в [Словарь аббревиатуры NSTimeZone], или список названий часовых поясов в [NSTimeZone известныеTimeZoneNames].Откуда этот?Мне нужно передать текущий часовой пояс устройства в приложение 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, вы получите только подмножество часовых поясов, что совершенно бесполезно.

РЕДАКТИРОВАТЬ:Чтобы избежать путаницы, причина, по которой я использовал приватный Time#get_zone API — это то, что используется за кулисами, когда вы вызываете Time#zone=.Если вам не требуется tzinfo, звоню Time.send(:get_zone, "US/Central") возвращает nil.

Другие советы

Вы получаете это из симулятора?Если да, то что возвращает эта команда, если вы запускаете ее с терминала?
$ systemsetup -gettimezone

Графический интерфейс настройки часового пояса в Mac OS 10.5 устанавливает часовые пояса как US/*.Если вы вручную установите его с консоли, вы можете установить один из ожидаемых часовых поясов.

Запустите это, чтобы получить список действительных, и обратите внимание, что US/Central среди них нет.
$ systemsetup -listtimezones

Запустите это, чтобы установить Америку/Чикаго.
$ systemsetup -settimezone Америка/Чикаго

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top