Cela semble simple, mais je n'arrive pas à trouver le moyen de le faire.
Ce serait bien de voir quelques méthodes différentes.
Cela semble simple, mais je n'arrive pas à trouver le moyen de le faire.
Ce serait bien de voir quelques méthodes différentes.
Voir la documentation de NSDate . Vous pouvez utiliser le dateFromString:
méthode de NSDateFormatter
ou le dateFromComponents:
méthode de NSCalendar
.
C'est ridicule, n'est-ce pas ?
Mi-2013 et Apple toujours n'a pas fourni un moyen simple de définir une valeur NSDate.
Dans le cadre de mon projet iPad actuel, je n'en revenais pas d'avoir dû interrompre ma productivité pendant un moment pour écrire ma propre classe d'aide pour obtenir la valeur Year d'un NSDate. Je veux dire, allez, c'est un truc de base.
Quoi qu'il en soit, voici la classe d'aide que j'ai utilisée dans mon projet, pour convertir une chaîne de caractères en une valeur NSDate :
@implementation DateHelper
+(NSDate*)parseDateString:(NSString *)dateString
{
NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
[rfc3339TimestampFormatterWithTimeZone setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[rfc3339TimestampFormatterWithTimeZone setDateFormat:@"MMM dd, yyyy"];
NSDate *theDate = nil;
NSError *error = nil;
if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {
NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
}
return theDate;
}
@end
En utilisant ce code, vous pourriez définir une valeur NSDate en utilisant quelque chose comme :
NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];
Note : cette fonction est basée sur un code tiré d'ici : https://stackoverflow.com/a/3968411/391605
Ma solution avait été d'utiliser le code suivant, mais j'ai découvert que parfois il n'a pas été analysé, et a retourné néant .
// Take a date string in the format "Oct 23, 2013", and convert it into a NSDate value
// THIS DOESN'T WORK ! DON'T TRUST THIS CODE !!
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate* date = [formatter dateFromString:dateString];
Je me souviens qu'elle a échoué lamentablement sur "Oct 12, 2012"... c'est pourquoi j'ai abandonné et utilisé la fonction plus compliquée "parseDateString" présentée ci-dessus.
Ce que je veux dire, c'est... soyez prudent.
Certaines des fonctions très basiques de NSDate ne fonctionnent pas correctement...
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.