Ios 我想在NSDateComponents类中获得四分之一的值

Ios 我想在NSDateComponents类中获得四分之一的值,ios,objective-c,nscalendar,nsdatecomponents,Ios,Objective C,Nscalendar,Nsdatecomponents,我想从指定日期获取四分之一的值。(*日期变量) 所以。我已经编写了以下代码并运行了。 但是,四分之一的价值是零 为什么四分之一的价值是零? 哪里有问题 请先进的人提出建议 NSDateComponents *comp1 = [[NSDateComponents alloc] init]; [comp1 setYear:2012]; [comp1 setMonth:6]; [comp1 setDay:1]; NSCalendar *gregorian = [[NSCalendar alloc]

我想从指定日期获取四分之一的值。(*日期变量)

所以。我已经编写了以下代码并运行了。 但是,四分之一的价值是零

为什么四分之一的价值是零? 哪里有问题

请先进的人提出建议

NSDateComponents *comp1 = [[NSDateComponents alloc] init];
[comp1 setYear:2012];
[comp1 setMonth:6];
[comp1 setDay:1];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDate *date = [gregorian dateFromComponents:comp1];  <== want to get a quarter value.

unsigned int unitFlags = NSYearCalendarUnit | NSQuarterCalendarUnit | NSMonthCalendarUnit | NSWeekOfYearCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *comp2 = [gregorian components:unitFlags fromDate:date];

NSLog(@"year :       %5d",[comp2 year]);
NSLog(@"quarter :    %5d",[comp2 quarter]);
NSLog(@"month :      %5d",[comp2 month]);
NSLog(@"weekofYear : %5d",[comp2 weekOfYear]);
NSLog(@"day :        %5d",[comp2 day]);

似乎存在忽略NSU的问题(尚未验证,但确实看到报告的错误)。不管怎样,这很简单,可以四处走动。。。只需使用NSDateFormatter类

// After your NSDate *date, add...
NSDateFormatter *quarterOnly = [[NSDateFormatter alloc]init];
[quarterOnly setDateFormat:@"Q"];

int quarter = [[quarterOnly stringFromDate:date] intValue];

// Then change the quarter NSLog too
NSLog(@"quarter :    %5d", quarter);
应该很好…

2014年12月16日

简单地说:


([comp2月]-1)/3+1

以上代码很好地工作。我想知道原因。感谢您的回答。NSLog(@“季度:%5d”,(0==[comp2季度])?([comp2月]-1)/3+1:[comp2季度];很难相信这样一个假设为公历的老错误(Swift 3.1)还在发生。
// After your NSDate *date, add...
NSDateFormatter *quarterOnly = [[NSDateFormatter alloc]init];
[quarterOnly setDateFormat:@"Q"];

int quarter = [[quarterOnly stringFromDate:date] intValue];

// Then change the quarter NSLog too
NSLog(@"quarter :    %5d", quarter);