2010-01-31 3 views
1

Я заметил, что на некоторых устройствах метод NSTimeZonename для конкретного часового пояса может возвращать разные значения. При тестировании часового пояса в Брисбене мое устройство возвращает @"Australia/Brisbane", тогда как другое устройство пользователя возвращает "Etc/GMT-10". Оба iPhone работают 3.1.2.Различные имена NSTimeZone, возвращаемые

В Date and Time Programming Guide for Cocoa говорится, что:

timeZoneWithName: Имя передается в этот метод может быть в любой из форматов, понимаемых системой, для например EST, Etc/GMT-2, Америка/Аргентина/Buenos_Aires, Европа/Монако или США/Тихоокеанский регион, как показано в следующем фрагменте кода.

Я хотел бы знать, что может определить, какое значение используется? Устройство? Язык?

ответ

1

Я обнаружил причину этого.

При ручной настройке часового пояса из встроенного списка Apple возвращается правильное и точное имя часового пояса. Однако некоторые мобильные операторы обеспечивают текущее смещение часового пояса по воздуху, и, если это так, Apple предоставляет «автоматическую» настройку, которая позволяет iPhone автоматически изменять часовой пояс, когда они переходят в другой часовой пояс.

Проблема заключается в том, что при наличии текущего смещения GMT невозможно определить, на какой широте находится пользователь. Очевидно, что может быть, например, несколько городов Австралии с часовым поясом GMT -10. Поэтому нет конкретного имени часового пояса, только в настоящее время в телефоне GMT ​​-10.

0

Я никогда не сценировал то, что вы описали. По моему опыту он возвращает имя, с которым вы его создали.

В любом случае, если вы используете имя для отображения пользовательского интерфейса, вы должны позвонить [NSTimeZone localizedName:locale:], чтобы заставить стиль имени вы хотите.

Смежные вопросы