2013-09-09 4 views
2

У меня есть часовой пояс: центральноевропейское летнее время в OS X (автоматически основано на местоположении). При запуске мой код на тренажере я получаю эти результаты:Значения и локализация NSTimeZone

NSTimeZone *tz = [NSTimeZone localTimeZone]; // Gives me Local Time Zone (Europe/Warsaw (CEST) offset 7200 (Daylight)) 

NSString *tzString = [tz localizedName:NSTimeZoneNameStyleShortStandard 
           locale:[NSLocale currentLocale]]; // Gives me CET 

То же самое с EDT/EST - когда я установил текущее время как EDT в системе -> Preferences, то соответствующие методы возвращающие EST ..

Am Я чего-то не хватает?

ответ

4

Standard в NSTimeZoneNameStyleShortStandard конкретно означает имя не-DST для часового пояса.

Если вы хотите использовать имя DST или нет, в зависимости от статуса DST на какую-то дату, вам, вероятно, придется использовать -isDaylightSavingTimeForDate:, чтобы принять решение о NSTimeZoneNameStyleShortStandard по сравнению с NSTimeZoneNameStyleShortDaylightSaving.

0

Apple предупреждает об использовании сокращений для часовых поясов. Лучше использовать известное смещение для вычисления с помощью +timeZoneForSecondsFromGMT:

Используйте свойство -daylightSavingTime, чтобы проверить состояние сохранения дневного света.