2010-12-13 28 views
0

J'ai attribué une formatter date, et je suis en train de mettre en forme une chaîne qui contient une date:NSDateFormatter DateFromString du flux RSS retour (NULL)

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

Comme vous pouvez le voir, je suis « NSLogging » le formatededate pour voir si cela avait fonctionné ou pas. Malheureusement, cela n'a pas fonctionné et revient donc (NULL).

S'il vous plaît pourriez-vous me dire ce que je fais mal.

Merci à l'avance.

+0

NSLaissez également la chaîne de date. Qu'est-ce que ça montre? – Anna

+0

Une des chaînes de date montre: Fri, 10 Dec 2010 23:48:36 +0000 – MKDev

Répondre

1

La chaîne "Ven, 10 Dec 2010 23:48:36 +0000" n'est pas un "style court".

Pour Parse que de manière fiable, définissez les paramètres régionaux et un format de date explicite:

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:
Pour afficher ensuite la formattedDate NSDate dans le format "Vendredi 10 Décembre 2010", ajouter ce code après ce qui précède:

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

Pour une explication des paramètres régionaux voir Apple QA1480.
Pour une explication du format de la date, voir Unicode Date Format Patterns.

+0

Merci pour cela, mais il est toujours de retour (NULL) – MKDev

+0

(Alors pourquoi avez-vous accepté la réponse?) Quoi qu'il en soit, remplacer le 'NSString * date = ... 'ligne avec' NSString * date = @ "Fri, 10 Dec 2010 23:48:36 +0000"; 'Renvoie-t-il toujours la valeur null? – Anna

+0

Non, ça revient: 2010-12-10 23:48:36 +0000 – MKDev