Вопрос

Я создаю дату, как это:

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-й недели прошлого года, ГГГГ будет в прошлом году ).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top