2010-12-04 33 views
2

cela m'a rendu fou, quelqu'un s'il vous plaît montrez-moi où je l'ai foiré.NSDateFromatter ne donne pas la bonne valeur MMMM

J'ai également créé un nouveau projet pour tester cela. L'environnement est xcode 3.2.5 s'exécutant dans le simulateur et sur un périphérique a le même résultat.

Lorsque je crée un formateur de date et définissez son format puis transmettre une chaîne, quelque chose ne fonctionne pas sur le formateur de date.

int tmpMonth = 11; 
int tmpYear = 2010; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
[dateFormatter setDateFormat:@"m/d/yyyy"]; 
NSString *dateAsString = [[NSString alloc] initWithFormat:@"%d/23/%d",tmpMonth,tmpYear]; 
NSDate *theDate = [[NSDate alloc] initWithTimeInterval:0 sinceDate:[dateFormatter dateFromString:dateAsString]]; 
[dateFormatter setDateFormat:@"MMMM d, yyyy"]; 
NSLog(@"%@",[dateFormatter stringFromDate:theDate]); 
[dateFormatter setDateFormat:@"m/d/yyyy"]; 
NSLog(@"%@",[dateFormatter stringFromDate:theDate]); 
[dateFormatter release]; 
[theDate release]; 
[dateAsString release]; 

cela se traduit par cette sortie:

[Session started at 2010-12-03 17:47:04 -0600.] 
2010-12-03 17:47:05.274 wtfDateFormatter[18970:207] January 23, 2010 
2010-12-03 17:47:05.277 wtfDateFormatter[18970:207] 11/23/2010 

Je ne sais pas pourquoi il est l'impression Janvier quand je lui donne le format MMMM, car cela fonctionne très bien dans d'autres parties de mon application, il utilise simplement une source NSDate différente.

Répondre

3

Vous utilisez 'm' pour le numéro du mois, à la fois pour interpréter et générer des chaînes. Malheureusement, 'm' est pour les minutes. Utilisez 'M' à la place.

+0

dang il. c'était ça. Je savais que j'ai regardé cela trop longtemps – AtomRiot

1

Quelle est la sortie si vous définissez le tmpMonth à 12? Je me demande s'il resterait en janvier ou passerait en février?