其他方法的说明 - (NSRange)maximumRangeOfUnit:(NSCalendarUnit)unit; 返回单元的最大范围。就Gregorian来说有: NSEraCalendarUnit => 0 - 2 NSYearCalendarUnit => 1 - 10000 NSMonthCalendarUnit = 1 - 12 NSDayCalendarUnit = 1 - 31 NSHourCalendarUnit = 0 - 24 NSMinuteCalendarUnit = 0 - 60 NSSecondCalendarUnit = 0 - 60 NSWeekCalendarUnit = 1 - 53 NSWeekdayCalendarUnit = 1 - 7 NSWeekdayOrdinalCalendarUnit = ? (2147483647 - 2147483647) (NSNotFound - NSNotFound)
- (NSRange)minimumRangeOfUnit:(NSCalendarUnit)unit; 返回单元的最小范围。就Gregorian来说有: NSEraCalendarUnit => 0 - 2 NSYearCalendarUnit => 1 - 10000 NSMonthCalendarUnit = 1 - 12 NSDayCalendarUnit = 1 - 28 *** NSHourCalendarUnit = 0 - 24 NSMinuteCalendarUnit = 0 - 60 NSSecondCalendarUnit = 0 - 60 NSWeekCalendarUnit = 1 - 52 *** NSWeekdayCalendarUnit = 1 - 7 NSWeekdayOrdinalCalendarUnit = ? (2147483647 - 2147483647) (NSNotFound - NSNotFound)
- (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date 返回某个特定时间(date)其对应的小的时间单元(smaller)在大的时间单元(larger)中的顺序,比如: . 要取得2008/11/12在当月的第几周则可以这样调用该方法: [calendar ordinalityOfUnit:NSWeekOrdinalCalendarUnit inUnit: NSWeekCalendarUnit forDate: someDate]; 注: someDate存放了2008/11/12
. 要取得1:50分在一天中处于第几个小时,则可以这样调用该方法: [calendar ordinalityOfUnit:NSHourCalendarUnit inUnit: NSDayCalendarUnit forDate: someTime]; 注: someTime存放了1:50
. 其它请参照firstWeekday和minimumDaysInFirstWeek中的说明
- (NSRange)rangeOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date 返回某个特定时间(date)其对应的小的时间单元(smaller)在大的时间单元(larger)中的范围,比如: . 要取得2008/11/12在所在月份的日期范围则可以这样调用该方法: [calendar ordinalityOfUnit:NSDayCalendarUnit inUnit: NSMonthCalendarUnit forDate:fDate]; 则返回1-31。注: fDate存放了2008/11/12
. 要取得2008/02/20在所在月份的日期范围则可以这样调用该方法: [calendar ordinalityOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:fDate]; 则返回1-29。注: fDate存放了2008/11/12
- (BOOL)rangeOfUnit:(NSCalendarUnit)unit startDate:(NSDate **)sDate interval:(NSTimeInterval *)unitSecs forDate:(NSDate *)date; 用于返回日期date(参数)所在的那个日历单元unit(参数)的开始时间(sDate)。其中参数unit指定了日历单元,参数sDate用于返回日历单元的第一天,参数unitSecs用于返回日历单元的长度(以秒为单位),参数date指定了一个特定的日期。 如果startDate和interval均为可计算的,那么函数返回YES否则返回NO.比如:
. 要计算2008/01/08日所在的周的第一天: ... NSDate *dateOut = [NSDate date]; NSDate **sDate = &dateOut; NSDateComponents *dc = [[NSDateComponents alloc] init]; [dc setYear: 2008]; [dc setMonth: 1]; [dc setDay: 8]; NSDate *date = [calendar dateFromComponents:dc]; NSTimeInterval intOut; NSTimeInterval *intervalOut = &intOut; if ([calendar rangeOfUnit:NSMonthCalendarUnit startDate:sDate interval:interval0 forDate:date]){ NSLog(@"%@", [*sDate description]); NSLog(@"%f", *intervalOut); } else{ NSLog(@"Can not be calculated!"); } ... 在控制台窗口上可以看到: 2008-01-06 00:00:00 +0800 604800.000000 注: 2008-01-06是2008/01/08所在周的第一天,604800是一周7天的秒数。
. 要计算2008/01/05日所在的周的第一天,在控制台窗口上可以看到: 2007-12-30 00:00:00 +0800 604800.000000
. 要计算2008/02/06日所在的月的第一天,在控制台窗口上可以看到: 2007-02-01 00:00:00 +0800 2505600.000000 注: 2505600是二月29天的秒数。
转载于:https://www.cnblogs.com/luqinbin/p/4910951.html
相关资源:数据结构—成绩单生成器