2010-08-16 6 views
1

Obtenir un NSString comme suit:NSDate de problèmes NSString

NSString *lastSyncDate = [[items objectAtIndex:0] objectForKey:@"LastSyncDate"]; 

Cette valeur est: 1/1/2010 00:00:00

J'utilise ce qui suit pour se convertir à une date:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setTimeStyle:NSDateFormatterFullStyle]; 
[df setDateFormat:@"MMMM d, y HH:mm:ss ZZZ"]; 
NSDate *mySyncDate = [df dateFromString:lastSyncDate]; 

Cela me donne une valeur nulle?

Répondre

4

Votre format de date ne correspond pas au format de la chaîne.

Essayez

[df setDateFormat:@"M/d/y hh:mm:ss a"]; 

ou

[df setDateFormat:@"M/d/y h:mm:ss a"]; // if the hours aren't zero-padded 

Les chaînes de format sont une norme Unicode décrit à http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

+0

génial, LOL - Je cherchais une liste quelque part qui me dirait ce que je pourrais utiliser pour DateFormat je devrais juste deviné! – Slee

+0

Bien sûr, la chaîne de date dépend du format de votre région/fuseau horaire/calendrier. Il est plus robuste de forcer des dates de style ISO 8601 ([description NSDate] est une approximation raisonnable, je pense), ou de simplement stocker timeIntervalSinceReferenceDate ou timeIntervalSince1970. –

0

Je suis d'accord avec Seamus Campbell. Cependant, sachez que la définition du style d'heure sur le formateur (NSDateFormatter) n'aura aucun effet sur le résultat renvoyé par dateFromString.