Comportamiento extraño al crear un NSDate del 1 y 2 de enero

Estoy creando una fecha como esta:

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]);

Mi problema es que cuando la fecha es el 1 de enero o el 2 de enero, el año no es correcto. Aquí debería ser 2010 (tal como lo recupero el año de hoy), pero en realidad es 2009 ... ¡No entiendo por qué! Y esto solo sucede durante esos 2 días ...

¿Tienes alguna idea de por qué es así? Gracias de antemano.

Respuestas a la pregunta(1)

Su respuesta a la pregunta