iPhone + Twitter API: конвертировать время? - PullRequest
10 голосов
/ 05 января 2010

Есть ли простой способ конвертировать отметку времени, полученную из твиттера, в время Unix или минуты? Я мог бы разобрать строку и преобразовать все сам, но я надеюсь, что есть способ преобразования, который не нуждается в этом. Вот пример элемента made_at с отметкой времени.

Вс 18 марта 06:42:26 +0000 2007

Ответы [ 4 ]

22 голосов
/ 05 января 2010

Вы можете использовать NSDateFormatter с чем-то вроде этого:


NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale]; 
[usLocale release];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];

// see http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
[dateFormatter setDateFormat: @"EEE MMM dd HH:mm:ss Z yyyy"];

NSDate *date = [dateFormatter dateFromString:[currentDict objectForKey:@"created_at"]];
[dateFormatter release];

NSTimeInterval seconds = [date timeIntervalSince1970];
2 голосов
/ 22 июля 2012

Я боролся с этим весь день, но эта ветка помогла мне найти решение.

Вот так я конвертирую атрибут твиттера "create_at" в NSDATE;

NSDateFormatter *fromTwitter = [[NSDateFormatter alloc] init];
// here we set the DateFormat  - note the quotes around +0000
[fromTwitter setDateFormat:@"EEE MMM dd HH:mm:ss '+0000' yyyy"];
// We need to set the locale to english - since the day- and month-names are in english
[fromTwitter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]];

NSString *dateString = [item objectForKey:@"created_at"];
NSDate *tweetedDate = [fromTwitter dateFromString:dateString];

Я надеюсь, что кто-то найдет это полезным.

0 голосов
/ 05 января 2010

Звучит так, будто вам нужно что-то вроде: Анализатор ISO 8601 и разборщик .

0 голосов
/ 05 января 2010

Подайте запрос на функцию в Apple и сообщите, что вы хотите эту функцию на iPhone. NSDateFormatter предоставляет устаревший метод init, который принимает логический флаг, указывающий, что вы хотите, чтобы он анализировал естественный язык, но он доступен только в OS X. Вил Шипли недавно написал интересное сообщение об этой функциональности в контексте эвристика и человеческий фактор.

Маловероятно, что Apple предоставит эту функцию, как указано в этой заметке из документов NSDateFormatter :

iPhone OS Примечание: iPhone OS поддерживает только 10.4+ поведения. 10,0-стиль методы и строки формата не доступно на iPhone OS.

Другими словами, я думаю, вам придется разбирать его самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...