Форматирование NSDate - PullRequest
       11

Форматирование NSDate

0 голосов
/ 19 ноября 2009

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

Я пытаюсь преобразовать это строковое значение в 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, я также хотел бы отформатировать его, используя локализованный формат даты на телефоне.

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

С уважением

Ответы [ 2 ]

6 голосов
/ 19 ноября 2009

Чтобы получить формат даты:

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 голосов
/ 19 августа 2012

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

[NSDate dateFromInternetDateTimeString:processedText formatHint:DateFormatHintRFC822];

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

...