Comportamento estranho ao criar um nsdate de janeiro o 1º e o 2º
-
28-09-2019 - |
Pergunta
Estou criando uma data 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]);
Meu problema é que, quando a data é de 1º de janeiro ou 2 de janeiro, o ano não está correto. Aqui deve ser 2010 (à medida que recuperar o ano de hoje), mas na verdade é 2009 ... Não entendo por que! E isso só está acontecendo para esses 2 dias ...
Você tem alguma ideia de por que é assim? Agradeço antecipadamente.
Solução
Veja o Padrão Unicode. "Aaaa" (minúscula) fornece o ano, mas "AAA" (caso superior) fornece o ano para a semana da data (ou seja, se a data estiver dentro da 52ª semana do ano passado, aaaa no ano passado ).
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow