dateFromComponents 返回错误值

dateFromComponents returning wrong value

我正在尝试设置 [NSDate date] 的月份和年份,但是函数 dateFromComponents return 的值错误,这是我的代码:

    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian]; // Setup an NSCalendar
NSDateComponents *components = [gregorianCalendar components: NSUIntegerMax fromDate: [NSDate date]]; // Setup NSDateComponents
[components setTimeZone:[NSTimeZone defaultTimeZone]];
[components setMonth:monthInt];
[components setYear:yearInt];

// Setup the new date
NSDate *dateToCompare = [gregorianCalendar dateFromComponents: components];

yearInt 是 2014,monthInt 是 12,但它报告的是 12-2015 而不是 2014,这是为什么?

谢谢!

你只需要输入你需要的位运算符,试试这个:

    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian]; // Setup an NSCalendar
NSDateComponents *components = [gregorianCalendar components: NSCalendarUnitDay | NSCalendarUnitMonth |  NSCalendarUnitYear |NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitHour | NSCalendarUnitTimeZone fromDate: [NSDate date]]; // Setup NSDateComponents
[components setTimeZone:[NSTimeZone defaultTimeZone]];
[components setMonth:12];
[components setYear:2014];

// Setup the new date
NSDate *dateToCompare = [gregorianCalendar dateFromComponents: components];

NSLog(@"Ver %@",dateToCompare);

NSUIntegerMax = 18446744073709551615 以位表示:1000000000000000000000000000000000000000000000000000000000000000 很多人关掉。