2009-11-19 6 views
0

Я извлекаю данные из RSS-ленты. Одним из ключей в фиде является строка, представляющая дату и время создания элемента.Форматирование NSDate

Я пытаюсь преобразовать это строковое значение в NSDate. Значение строки возвращаются из RSS-канала, как: 2009-11-18T22: 08: 00 + 00: 00

Я попытался следующий код не дали никаких результатов:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyyMMdd HH:mm"]; 
NSDate *myDate = [df dateFromString: [[storedDates objectAtIndex:indexPath.row] objectForKey: @"UsersDate"]]; 

В идеале; вместо преобразования значения в значение NSDate, я также хотел бы отформатировать его с использованием локализованного формата даты на трубке.

Любые указатели будут полезны.

С наилучшими пожеланиями

+0

Это T должен быть в 2009-11-18T22: 08: 00 + 00: 00? или это опечатка? – nduplessis

ответ

6

Чтобы получить DateFormat:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 
NSDate *myDate = [df dateFromString: [[storedDates objectAtIndex:indexPath.row] objectForKey: @"UsersDate"]]; 

Вы можете использовать предопределенные форматы, если вы хотите отформатировать дату и время в соответствии с локали пользователя:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterShortStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterLongStyle]; 
NSLog(@"%@",[dateFormatter stringFromDate:someDate]); 
[dateFormatter release]; // don't forget to release the dateformatter  

Проверьте документацию, чтобы узнать, какой формат лучше подходит вам.

+0

Извините, забыл ответить на вопрос о разборе даты из строки. см. мой обновленный ответ – FelixLam

+0

Большое спасибо Феликс. –

0

Собственно форма дата в RSS корм может отличаться, так что лучший способ, чтобы разобрать его следующий

[NSDate dateFromInternetDateTimeString:processedText formatHint:DateFormatHintRFC822]; 

Это не стандартная функция, библиотека для нее можно найти здесь https://gist.github.com/953664

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