1月1日と2日のNSDateを作成するときの奇妙な動作
-
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月1日または1月2日である場合、年は正しくないということです。そして、これはそれらの2日間だけ起こっています...
なぜそうなのか分かりますか?前もって感謝します。
解決
を参照してください Unicode標準. 。 「yyyy」(小文字)が年を与えますが、「yyyy」(大文字)は日付の年を与えます(つまり、日付が昨年の52週間以内にある場合、yyyyは昨年になります)。
所属していません StackOverflow