-->

我想在NSDateComponents类的四分之一值(I want to get a quarter

2019-06-26 11:41发布

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

所以。 我做了下面的代码并运行。 但是,季度值为零。

为什么季度值是零? 在哪里的问题?

请从先进的人的意见。

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]);

结果:

2012-07-24 03:44:14.776 dateTest[1228:1307] year :        2012
2012-07-24 03:44:14.776 dateTest[1228:1307] quarter :        0
2012-07-24 03:44:14.777 dateTest[1228:1307] month :          6
2012-07-24 03:44:14.777 dateTest[1228:1307] weekofYear :    22
2012-07-24 03:44:14.778 dateTest[1228:1307] day :            1

Answer 1:

它似乎有与NSQuarterCalendarUnit一个问题被忽略了(还没有验证,但没有看到报道中的错误)。 无论如何,这是很简单的得到解决......只需使用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);

应该正常工作...



Answer 2:

二○一四年十二月一十六日

如何简单地说:

([COMP2月] -1)/ 3 + 1;



文章来源: I want to get a quarter value in NSDateComponents class