本文共 2311 字,大约阅读时间需要 7 分钟。
NSDateComponents封装在一个可扩展的,面向对象的方式的日期组件。它是用来弥补时间的日期和时间组件提供一个指定日期:小时,分钟,秒,日,月,年,等等。它也可以用来指定的时间,例如,5小时16分钟。
一个NSDateComponents对象不需要定义所有组件领域。当一个NSDateComponents的新实例被创建,日期组件被设置为NSUndefinedDateComponent。
一个NSDateComponents对象本身是毫无意义的;你需要知道它是针对什么日历解释,你需要知道它的值是否是正整数和值是多少。
NSDateComponents的实例不负责回答关于一个日期以外的信息,它是需要先初始化的。例如,如果你初始化一个对象为2004年5月6日,其星期几NSUndefinedDateComponent,不是星期四。要得到正确的星期几,你必须创建一个NSCalendar日历实例,创建一个NSDate对象并使用dateFromComponents:方法,然后使用components:fromDate:
检索平周几
获取一个NSDateComponents对象的信息
era | 时代 |
year | 年 |
month | 月 |
day | 天 |
hour | 时 |
minute | 分 |
second | 秒 |
week | 周 |
weekday | 星期名称 |
weekdayOrdinal | |
quarter | 季度 |
设置一个NSDateComponents对象的信息
setEra: | 时代 |
setYear: | 年 |
setMonth: | 月 |
setDay: | 天 |
setHour: | 时 |
setMinute: | 分 |
setSecond: | 秒 |
setWeek: | 周 |
setWeekday: | 星期名称 |
setWeekdayOrdinal: | |
setQuarter: | 季度 |
例子如下:获得2004年5月6日是星期几
NSDateComponents *comps = [[NSDateComponents alloc] init];[comps setDay:6];[comps setMonth:5];[comps setYear:2004];NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];NSDate *date = [gregorian dateFromComponents:comps];[comps release];NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:date];int weekday = [weekdayComponents weekday];NSLog(@"%d",weekday);//一段例子:计算距离某一天还有多少时间NSDate* toDate = [ [ NSDate alloc] initWithString:@"2012-9-29 0:0:00 +0600" ]; NSDate* startDate = [ [ NSDate alloc] init ]; NSCalendar* chineseClendar = [ [ NSCalendar alloc ] initWithCalendarIdentifier:NSGregorianCalendar ]; NSUInteger unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit; NSDateComponents *cps = [chineseClendar components:unitFlags fromDate:startDate toDate:toDate options:0]; NSInteger diffHour = [cps hour]; NSInteger diffMin = [cps minute]; NSInteger diffSec = [cps second]; NSInteger diffDay = [cps day]; NSInteger diffMon = [cps month]; NSInteger diffYear = [cps year]; NSLog( @" From Now to %@, diff: Years: %d Months: %d, Days; %d, Hours: %d, Mins:%d, sec:%d", [toDate description], diffYear, diffMon, diffDay, diffHour, diffMin,diffSec ); [toDate release]; [startDate release]; [chineseClendar release];
转载地址:http://kaggz.baihongyu.com/