ios - 我想在 NSDateComponents 类中获得四分之一的值(value)

标签 ios objective-c nscalendar nsdatecomponents

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

所以。我制作了以下代码并运行。 但是,季度值为零。

为什么季度值(value)为零? 哪里有问题?

请高人指点。

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 类即可。

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

应该可以正常工作...

关于ios - 我想在 NSDateComponents 类中获得四分之一的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11618784/

相关文章:

ios - Objective-C:如何在锁定人像方向锁定后拍摄后固定图像方向

ios - 处理 Apple 推送通知服务

ios - 从 Swift 中的 UIDatePicker 中选择时无法以正确格式显示日历

ios - objective-C/iOS : Get date for specific day in week (sunday)

ios - 仅自定义相册的 PHFetchResult

ios - 如何使用 Swift 3 在 iOS 10 上隐藏状态栏及其内容?

ios - UIView 类对父 View Controller 有太多委托(delegate)方法?

objective-c - xcode4中框架和静态库的区别,以及如何调用它们

iphone - 在 iphone 中用 “today” 和 “yesterday” 字符串替换日期对象

ios8 - 什么是iOS 8.0+ NSCalendarUnits?