2013-08-26 1 views
0

Не уверен, что мне здесь не хватает. Следующий код возвращает действительный NSDate, но с неправильным временем.iOS NSDateformatter issue - dateFromString, возвращающее то же (неверное) время независимо от строки ввода

На самом деле это не имеет значения, вернулось ли время даты dateString, поэтому я не думаю, что это проблема с часовым поясом, но проблема с форматированием.

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]; 

[inputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss+HH:mm"]; 
[inputFormatter setTimeZone:[NSTimeZone defaultTimeZone]]; 

NSString *dateString = @"2013-07-26T19:45:00+01:00"; 

NSDate *theDate = [inputFormatter dateFromString:dateString]; 

// returns an NSDate of 2013-07-26 01:00 BST or 2013-07-26 00:00 in NSLog 

Любое место, где я ошибаюсь? Спасибо, М.

ответ

1

В вашей фидате есть небольшая ошибка, вы не обрабатываете смещение даты (часовой пояс). NSDateFormatter не будет выбирать последнее найденное время как время, а не часовой пояс.

В вашем коде yyyy-MM-dd'T'HH:mm:ss+HH:mm вы анализируете время дважды, вы должны использовать yyyy-MM-dd'T'HH:mm:ssZZZZ. ZZZZ указывает часовой пояс. Помните, что этот код будет работать только на iOS6 и выше, если вам нужна поддержка iOS 5, вы должны удалить : из часового пояса.

+0

Интересно, что разница в версии iOS в часовом поясе ... У вас есть ссылка на эту руку? –

+0

Большое вам спасибо. Я пробовал с Z! Я так долго начинал в руководстве по разметке локалей, я просто не мог понять, где я ошибаюсь. Я очень ценю ваш ответ. – wuf810

+1

Это на самом деле 'ZZZZZ', который является новым для iOS 6, а не' ZZZZ'. Тем не менее, NSDate кажется случайным образом просто «получить», что меня смущает. Согласно ссылочной странице, четыре-Z ('ZZZZ') должны быть одинаковыми между iOS 5 и 6. @CarlVeazey. Это страница, на которой отображается разбор грамматики против версии ios -> https://developer.apple.com/library/ ИОС/документация/какао/Концептуальные/DataFormatting/Статьи/dfDateFormatting10_4.html – borrrden

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