- (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)ide
- (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/12ip
. 要取得1:50分在一天中處於第幾個小時,則能夠這樣調用該方法:
[calendar ordinalityOfUnit:NSHourCalendarUnit inUnit: NSDayCalendarUnit forDate: someTime];
注: someTime存放了1:50it
. 其它請參照firstWeekday和minimumDaysInFirstWeek中的說明io
- (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/12class
. 要取得2008/02/20在所在月份的日期範圍則能夠這樣調用該方法:
[calendar ordinalityOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:fDate];
則返回1-29。注: fDate存放了2008/11/12date
- (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天的秒數。 im
. 要計算2008/01/05日所在的周的第一天,在控制檯窗口上能夠看到:
2007-12-30 00:00:00 +0800
604800.000000di
. 要計算2008/02/06日所在的月的第一天,在控制檯窗口上能夠看到: 2007-02-01 00:00:00 +0800 2505600.000000 注: 2505600是二月29天的秒數