использовать NSDateFormatter для разбора строк Twitter - PullRequest
3 голосов
/ 26 июля 2011

Я пытаюсь создать NSDate из строки, возвращаемой API Twitter. Поскольку я потратил часы на эту проблему, я создал пример приложения

NSString *testDate = @"Mon Jul 25 21:20:58 +0000 2011";
NSDateFormatter *frm = [[NSDateFormatter alloc] init];
[frm setDateStyle:NSDateFormatterLongStyle];
[frm setFormatterBehavior:NSDateFormatterBehavior10_4];
[frm setDateFormat: @"EEE MMM dd HH:mm:ss 'Z' yyyy"];
NSDate *newDate = [frm dateFromString:testDate];
NSLog(@"newDate:%@", newDate);

Для меня этот код «должен» работать.

все, что я получил, это:

2011-07-25 19:36:08.467 test[92:707] Test
2011-07-25 19:36:08.475 test[92:707] newDate:(null)

Я нашел это, но оно тоже не работает .

У меня Lion + Xcode 4.1 Мой iPadпод 4.3.5

Заранее спасибо за любую помощь;)

Ответы [ 3 ]

5 голосов
/ 26 июля 2011

Не пинайте себя слишком сильно ...

В строке формата удалите апострофы из Z.Апострофы означают, что это будет буквально Z, а не часовой пояс.Если вы удалите их, это будет работать правильно.

3 голосов
/ 27 июля 2011

Вот что у меня сработало

нет кавычек вокруг Z, как сказал Дэйв Делонг. Я использовал setLocale в NSDateFormatter, он улучшил его работу.

NSDateFormatter *frm = [[NSDateFormatter alloc] init];
[frm setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[frm setDateFormat:@"EEE MMM dd HH:mm:ss Z yyyy"];
1 голос
/ 11 марта 2013

Для тех, кто находит это через Google, Twitter, очевидно, изменил свои форматы даты, по крайней мере, для своей конечной точки http://search.twitter.com/search.json.

...