Comportement étrange de lors de la création d'un NSDate de Janvier le 1er et le 2ème
-
28-09-2019 - |
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.
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