Question

Je crée une date comme ceci:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY"];
NSInteger year = [[dateFormatter stringFromDate:[NSDate date]] intValue];
NSLog(@"NSInteger YEAR : %d\n", year);

//minutes, hours, day and month are initialized elsewhere...

NSDateComponents *comps = [[NSDateComponents alloc] init];      
[comps setYear:year];
[comps setMonth:month];
[comps setDay:day];
[comps setHour:hours];
[comps setMinute:minutes];
NSDate *sampleDate = [gregorian dateFromComponents:comps];

NSLog(@"sampleDate YEAR : %d\n", [[dateFormatter stringFromDate:sampleDate] intValue]);

Mon problème est que lorsque la date est fixée au 1er Janvier ou 2 Janvier l'année n'est pas correct .. Ici, il devrait être 2010 (comme je l'année récupérer aujourd'hui), mais en réalité il est 2009 ... Je ne comprends pas Pourquoi ! Et cela se produit seulement pour les 2 jours ...

Avez-vous une idée pourquoi est-il de cette façon? Nous vous remercions à l'avance.

Était-ce utile?

La solution

Voir la norme Unicode . « Aaaa » (minuscule) vous donne l'année, mais « AAAA » (majuscule) vous donne l'année pour la semaine de la date (qui est, si la date est comprise dans la 52e semaine de l'année dernière, AAAA sera l'année dernière ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top