2012-04-30 3 views
0

На iOS 5 (симулятор и устройство), когда я попытался разобрать строку даты с ИОС с часовым поясом, он просто возвращает (null). Странно, что этот часовой пояс хорошо работал в iOS4.3.Почему NSDateFormatter не работает с ICT TimeZone

NSString *inputDateStr = @"Fri, 06 Apr 2012 13:00:00 ICT"; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"]; 
NSDate *inputDate = [df dateFromString:inputDateStr]; 
NSLog(@"--- INPUT %@ -> %@ ---",inputDateStr, inputDate); 

--- INPUT Fri, 06 Apr 2012 13:00:00 ICT -> (null) ---

Но когда я попробовал другой часовой пояс, как PST, это работает!?

NSString *inputDateStr = @"Fri, 06 Apr 2012 13:00:00 PST"; 

--- INPUT Fri, 06 Apr 2012 13:00:00 PST -> 2012-04-06 21:00:00 +0000 ---

я распечатал [NSTimeZone abbreviationDictionary] и до сих пор видим ИКТ там. Поэтому этот часовой пояс должен оставаться в силе. Итак, почему я получаю (null)?

ответ

0

Названия часовых поясов специфичны для локали и могут означать что-то другое на разных языках или вообще не существовать.

например.

ИКТ Îles Крозэ Время +4
ИКТ Индокитай Время +7

Использование: GMT + XX для стабильной функциональности.

EDIT:

Смотрите эту ссылку для получения дополнительной информации о часовых поясах: http://unicode.org/repos/cldr/trunk/docs/web/tr35.html#Time_Zone_Fallback

Обратите внимание на раздел под названием "Time Zone Display Имена". Эти имена никогда не были предназначены для использования для синтаксического анализа. Они должны отображаться (например, в результате шаблона ZZZ).

+0

Да, это более стабильно. Но использование GMT ​​не имеет летнего времени. – Hlung

+0

PST также не имеет летнего света. Обратите внимание, что есть «Pacific Standart Time (PST)» и «Pacific Daylight Time (PDT)». Тем не менее, PST также может означать «стандартное время в Пакистане», а в моем регионе (cs-CZ) PST недоступен вообще. – Sulthan

+0

Добавлена ​​дополнительная информация. – Sulthan

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