2010-06-17 18 views
1

Je crée une date comme celle-ci:comportement étrange lors de la création d'un NSDate de Janvier le 1er et le 2ème

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 récupère l'année d'aujourd'hui), mais en fait c'est 2009 ... Je ne comprends pas pourquoi! Et cela ne se passe que pendant ces 2 jours ...

Avez-vous une idée pourquoi c'est comme ça? Merci d'avance.

Répondre

5

Voir le Unicode standard. "yyyy" (minuscule) vous donne l'année, mais "YYYY" (majuscule) vous donne l'année pour la semaine de la date (c'est-à-dire si la date est dans la 52e semaine de la dernière année, AAAA sera l'année dernière).

+0

Oui, cela fonctionne .. Merci. Merci pour le lien en passant! – leochab