strano comportamento quando si crea un NSDate di gennaio il 1 ° e il 2 °
-
28-09-2019 - |
Domanda
Sto creando un data così:
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]);
Il mio problema è che quando la data è il 1 ° gennaio o 2 gennaio, l'anno non è corretto .. Qui dovrebbe essere 2010 (come posso recuperare l'anno di oggi), ma in realtà è 2009 ... non capisco perché ! E questo accade solo per i 2 giorni ...
Avete qualche idea del perché è in questo modo? Grazie in anticipo.
Soluzione
Vedere la standard Unicode . "Aaaa" (minuscolo) ti dà l'anno, ma "AAAA" (maiuscolo) si dà l'anno per la settimana della data (cioè, se la data è entro la settimana 52 ° dello scorso anno, AAAA sarà l'anno scorso ).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow