iOS学习之—— NSDateComponents

NSDateComponents
NSDateComponents封装在一个可扩展的,面向对象的方式的日期组件。它是用来弥补时间的日期和时间组件提供一个指定日期:小时,分钟,秒,日,月,年,等等。它也可以用来指定的时间,例如,5小时16分钟。一个NSDateComponents对象不需要定义所有组件领域。当一个NSDateComponents的新实例被创建,日期组件被设置为NSUndefinedDateComponent。
一个NSDateComponents对象本身是毫无意义的;你需要知道它是针对什么日历解释,你需要知道它的值是否是正整数和值是多少。
NSDateComponents的实例不负责回答关于一个日期以外的信息,它是需要先初始化的。例如,如果你初始化一个对象为2004年5月6日,其星期几NSUndefinedDateComponent,不是星期四。要得到正确的星期几,你必须创建一个NSCalendar日历实例,创建一个NSDate对象并使用dateFromComponents:方法,然后使用components:fromDate:检索平周几

Getting Information About an NSDateComponents Object
获取一个NSDateComponents对象的信息
– era 时代
– year 年
– month 月
– day 天
– hour 时
– minute 分
– second 秒
– week
– weekday
– weekdayOrdinal
– quarter 季度
Setting Information for an NSDateComponents Object
设置一个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];  

你可能感兴趣的:(ios,NSDate,日期组件)