dateFromString работает в ios6, но не в ios5

Я знаю, что тем на эту тему много, и я их все прочитал.

В моем конкретном случае при тестировании на iPhone 6.1 Simulator dateFromString работает безупречно, но возвращает null на iPhone 5.1 Simulator. Я также протестировал его на нескольких устройствах с iOS6 и iOS5 и пришел к такому же выводу.

Формат ввода: 2013-02-15T18:00:00+03:00

Я написал следующий код:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss+zz:zz"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:input];

[dateFormatter setDateFormat:@"EEE'. 'dd' 'MMM' 'yyyy', 'HH':'mm"];
NSString *stringFromDate = [dateFormatter stringFromDate:dateFromString];
return stringFromDate;

... для получения в stringFromDate "Пт. 15 февраля 2013 г., 18:00" на iOS6 и "null" на iOS5 как на симуляторах, так и на устройствах.

Пожалуйста помогите


person n2oula    schedule 06.02.2013    source источник
comment
Почему вы устанавливаете [dateFormatter setDateFormat:...] дважды?   -  person flashfabrixx    schedule 06.02.2013
comment
Я использую тот же dateFormatter, чтобы изменить формат на новый после преобразования входной строки в NSDate.   -  person n2oula    schedule 06.02.2013
comment
Ох, ладно. После некоторых исследований я обнаружил, что возможная подобная ситуация связана с изменениями местоположения, в котором находится пользователь (или симулятор). developer.apple.com/library/ios/#qa/qa1480/ _index.html   -  person flashfabrixx    schedule 06.02.2013
comment
Спасибо за ссылку! К сожалению, я перепробовал все, что там было сказано, но все равно получаю тот же результат... PS: Симуляторы 6.1 и 5.1 находятся в одной и той же установке XCode (следовательно, оба имеют одинаковые системные настройки времени и даты)   -  person n2oula    schedule 07.02.2013
comment
Любая подсказка? я все еще застрял   -  person n2oula    schedule 11.02.2013
comment
Кажется, проблема с : в форматере. Проверьте этот вопрос и ответ в первом комментарии. stackoverflow.com/questions/11413600/   -  person flashfabrixx    schedule 12.02.2013
comment
Спасибо, эта ветка привела меня к другой, которая мне помогла: я смог решить ее, используя следующие строки кода: NSDate *theDate = nil; NSError * ошибка = ноль; if (![dateFormatter getObjectValue:&theDate forString:входной диапазон:ноль ошибка:&ошибка]) {}   -  person n2oula    schedule 13.02.2013


Ответы (1)


Это не проблема iOS5 или iOS 6. Пожалуйста, проверьте формат времени, заданный в настройках, является ли он 12-часовым или 24-часовым форматом.

Это решит вашу проблему

person Scorpian Alive    schedule 06.02.2013
comment
Уважаемый Виджай, Спасибо за быстрый ответ. Я пробовал это на устройстве, оно по-прежнему возвращает мне ноль на iOS5, а что касается симуляторов, я думаю, что учитываются системные настройки Mac OS X; на панели «Общие» настроек нет параметра «Дата и время». - person n2oula; 06.02.2013