1

私はこのような日付を作成しています:

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 月 1 日または 1 月 2 日の場合、年が正しくないことです。ここでは 2010 年 (今日の年を取得した場合) のはずですが、実際には 2009 年です...理由がわかりません! そして、これはその2日間だけ起こっています...

なぜそのようになっているのか分かりますか?前もって感謝します。

4

1 に答える 1

6

Unicode標準を参照してください。「yyyy」(小文字)は年を示しますが、「YYYY」(大文字)は日付の週の年を示します(つまり、日付が昨年の52週以内の場合、YYYYは昨年になります。 )。

于 2010-06-17T15:34:13.927 に答える