55 votes

Comment convertir une chaîne de date en objective-c?

J'ai mis en place un calendrier d'application pour l'iPhone en qui j'ai une date dans un format de chaîne (ex: "Tue, 25 Mai 2010 12:53:58 +0000").

Je veux convertir à un NSDate.

Mais j'ai essayé beaucoup de choses sans succès.

Merci donc de me donner une idée sur ce format.

Merci à l'avance.

129voto

Sam Ritchie Points 7787

Jetez un oeil à la classe de référence pour NSDateFormatter. Vous l'utilisez comme ceci:

NSString *dateStr = @"Tue, 25 May 2010 12:53:58 +0000";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EE, d LLLL yyyy HH:mm:ss Z"];
NSDate *date = [dateFormat dateFromString:dateStr]; 
[dateFormat release];

Pour plus d'informations sur la façon de personnaliser NSDateFormatter, essayez ce guide de référence.

EDIT:

Si vous le savez, cela va analyser le nom complet du mois. Si vous voulez de trois lettres des noms de mois, utilisez LLL au lieu de LLLL.

6voto

Pier-Luc Gendreau Points 2288

Si vous êtes l'enregistrement des dates dans l'une de iOS styles, il est beaucoup plus facile et moins sujette aux erreurs d'utiliser cette méthode:

// Define a date formatter for storage, full style for more flexibility
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];
[dateFormatter setTimeStyle:NSDateFormatterFullStyle];

// Use today as an example
NSDate *today = [NSDate date];
// Format to a string using predefined styles
NSString *dateString = [dateFormatter stringFromDate:today];
// Format back to a date using the same styles
NSDate *todayFromString = [dateFormatter dateFromString:dateString];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X