NSDateFormatter DateFromString из RSS-канала возвращается (NULL) - PullRequest
0 голосов
/ 13 декабря 2010

Я выделил форматер даты и пытаюсь отформатировать строку, содержащую дату:

formatter = [[NSDateFormatter alloc] init];<br> [formatter setDateStyle:NSDateFormatterShortStyle];<br> [formatter setTimeStyle:NSDateFormatterShortStyle];<br> NSString *date = [[stories objectAtIndex:storyIndex] objectForKey:@"date"];<br> NSDate *formattedDate = [formatter dateFromString:date];<br> NSLog(@"%@", formattedDate);

Как вы видите, я 'NSLogging' отформатировал дату дляпосмотрим, сработало ли это или нет.К сожалению, это не сработало и поэтому возвращается (NULL).

Пожалуйста, не могли бы вы сказать мне, что я делаю неправильно.

Спасибо заранее.

1 Ответ

1 голос
/ 13 декабря 2010

Строка «Пт, 10 декабря 2010 23:48:36 +0000» не является «коротким стилем».

Для надежного анализа, установите локаль и явный формат даты:

formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[[NSLocale alloc] 
    initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[formatter setLocale:locale];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
NSString *date = [[stories objectAtIndex:storyIndex] objectForKey:@"date"];
NSDate *formattedDate = [formatter dateFromString:date];
NSLog(@"%@", formattedDate);


Edit:
Чтобы затем отобразить NSDate formattedDate в формате «Пятница 10 декабря 2010 года», добавьте этот код после вышеприведенного:

NSDateFormatter *displayFormatter = [[NSDateFormatter alloc] init];
[displayFormatter setLocale:locale];
[displayFormatter setDateFormat:@"EEEE dd MMMM yyyy"];
NSString *displayDate = [displayFormatter stringFromDate:formattedDate];
NSLog(@"displayDate = %@", displayDate);
[displayFormatter release];

Описание языка см. В Apple QA1480 .
Объяснение формата даты см. Шаблоны формата даты в Юникоде .

...