Странное поведение при создании NSDate от 1 января и 2-го
-
28-09-2019 - |
Вопрос
Я создаю дату, как это:
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]);
Моя проблема заключается в том, что, когда дата 1 января или 2 января, этот год не является правильным .. Здесь должно быть 2010 (как я извлекаю сегодняшний год), но на самом деле это 2009 год ... Я не понимаю, почему! И это происходит только в течение этих 2 дней ...
У вас есть идеи, почему это так? Заранее спасибо.
Решение
Увидеть Стандарт Unicode. Отказ «ГГГГ» (нижний регистр) дает вам год, но «ГГГГ» (верхний регистр) дает вам год на неделю даты (то есть, если дата в течение 52-й недели прошлого года, ГГГГ будет в прошлом году ).
Не связан с StackOverflow