2010-07-01 6 views
1

Im essayant d'augmenter une date et obtenir une sortie formatée pour chaque mois ... cela fonctionne très bien, mais l'étape Dec 2010 à Jan 2011 ne fonctionne pas. s'il vous plaît jeter un oeil à ceci:NSDateFormatter problème avec augmenté Date

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
NSDate *lastDate = [[NSDate alloc] init]; 

for (int i = 0; i < 12; i++) { 
    NSDateComponents *offsetComponents = [[[NSDateComponents alloc] init] autorelease]; 
    [offsetComponents setMonth: 1]; 
    lastDate = [[gregorian dateByAddingComponents:offsetComponents toDate: lastDate options:0] retain]; 


    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
    [dateFormatter setDateFormat:@"MMMM YYYY"]; 

    NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]; 
    [dateFormatter setLocale:locale]; 

    NSLog(@"%d: Fromatted Date: %@ from : %@", i, [dateFormatter stringFromDate:lastDate], lastDate); 
} 

sortie de débogage: [. Session a commencé à 2010-07-01 11:05:18 0200] 0: Fromatted Date: Août 2010 de: 2010-08 -01 11:05:19 +0200

1: Fromatted date: Septembre 2010 à partir de: 2010-09-01 11:05:19 +0200

2: Fromatted date: Octobre 2010 à partir de: 2010-10 -01 11:05:19 +0200

3: Date de début: Novembre 2010 à partir de: 2010-11-01 11:05:19 +0100 4: Date de début: Décembre 2010 à partir de: 2010-12-01 11:05:19 +0100

5: Date de début: janvier 2010 à partir de: 2011-01 -01 11:05:19 +0100 < --- POURQUOI est l'année 2010?!

6: Fromatted Date: Février 2011 à partir de: 2011-02-01 11:05:19 +0100

7: Fromatted Date: Mars 2011 à partir de: 2011-03-01 11:05:19 +0100

8: Fromatted date: Avril 2011 à partir de: 2011-04-01 11:05:19 +0200

9: Fromatted date: mai 2011 à partir de: 2011-05-01 11:05:19 +0200

10: Date de début: Juin 2011 à partir de: 2011-06-01 11:05:19 +0200

11: Date d'arrêt: Juillet 2011 à partir de: 2011-07-01 11:05:19 +0200

Répondre

3

hmm :-( vraiment étrange. Je viens de faire une nouvelle application basée-vue ... cann't trouver un soupçon

** Mise à jour: ok si j'utilise [DateFormatter setDateFormat: @ "MMMM yyyy"] (donc juste en minuscule Y) son travail.

y/aaaa: (année pleine)

yy/yyy: (2 Digits Année)

Y/YYYY: (année, à partir du dimanche de la 1ère semaine de l'année)

YY/YYY: (Année 2 chiffres, à partir du dimanche de la 1ère semaine de l'année)

+0

C'est certainement la réponse. Remplacé YYYY avec yyyy - et tout fonctionne maintenant. – HiveHicks

+0

Merci; ça a réglé mon problème aussi! :-) –

1

Je n'ai pas non plus rencontré de problème dont vous parlez. J'ai également copier votre code et fonctionnait bien.

Je ne suis pas sûr mais je pense qu'il doit y avoir un problème de versions de SDK. parce que nous utilisons 3.1.3 et fonctionnait bien. juste essayer dans différentes versions de SDK. Cheers Mitul