我想在NSDateComponents类中获得四分之一值 [英] I want to get a quarter value in NSDateComponents class
本文介绍了我想在NSDateComponents类中获得四分之一值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从指定日期获得四分之一的值。 (*日期变量)
I want to get a quarter value from specified date. (*date variable)
所以。我已经制作了以下代码并运行。
但是,季度值为零。
So. I have made following code and run. but, quarter value is zero.
为什么季度值为零?
哪里有问题?
Why quarter value is zero? where's problem?
请高级人员提出建议。
Please advice from advanced man.
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
推荐答案
似乎忽略了NSQuarterCalendarUnit的问题(尚未验证,但确实看到了报告的错误)。无论如何,它很简单到处...只需使用NSDateFormatter类。
It seems that there is an issue with the NSQuarterCalendarUnit being ignored (haven't verified, but did see a bug reported). Anyway, it is simple enough to get around... Just use the NSDateFormatter class.
// 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);
应该可以正常工作......
Should work fine...
这篇关于我想在NSDateComponents类中获得四分之一值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文