前言
NSDateComponents是一个与日期有关的类,但这个类具体是干吗的呢?我们现从字面上的意思来理解。Components就是零件、组件的意思,其实这个类的作用就是把日期拆分成一个一个的组件。一个日期是有年月日时分秒组成的,components这个类的作用就是把日期拆分成单独的年、月、日、时、分、秒。
一、访问日期组件
1、era
(1)方法原型
@property NSInteger era
//时代
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitEra fromDate:date];
NSInteger era = [components era];
NSLog(@"era:%d",era);
输出:2016-01-22 11:37:47.691 NSDate[3541:89557] era:1
2、year
(1)方法原型
@property NSInteger year
//年
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitYear fromDate:date];
NSInteger year = [components year];
NSLog(@"year:%d",year);
输出:2016-01-22 11:12:11.479 NSDate[3294:75774] year:2016
3、month
(1)方法原型
@property NSInteger month
//月
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitMonth fromDate:date];
NSInteger month = [components month];
NSLog(@"month:%d",month);
输出:2016-01-22 11:40:31.677 NSDate[3585:91253] month:1
4、month
(1)方法原型
@property NSInteger month
//月
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitMonth fromDate:date];
NSInteger month = [components month];
NSLog(@"month:%d",month);
输出:2016-01-22 11:40:31.677 NSDate[3585:91253] month:1
5、day
(1)方法原型
@property NSInteger day
//日
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitDay fromDate:date];
NSInteger day = [components day];
NSLog(@"day:%d",day);
输出:2016-01-22 11:46:09.345 NSDate[3654:93902] day:22
6、hour
(1)方法原型
@property NSInteger hour
//时
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitHour fromDate:date];
NSInteger hour = [components hour];
NSLog(@"hour:%d",hour);
输出:2016-01-22 11:47:45.195 NSDate[3684:94879] hour:11
7、minute
(1)方法原型
@property NSInteger minute
//分
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitMinute fromDate:date];
NSInteger minute = [components minute];
NSLog(@"minute:%d",minute);
输出:2016-01-22 11:49:03.349 NSDate[3719:95826] minute:49
8、second
(1)方法原型
@property NSInteger second
//秒
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitSecond fromDate:date];
NSInteger second = [components second];
NSLog(@"second:%d",second);
输出:2016-01-22 11:52:23.927 NSDate[3778:97830] second:23
9、nanosecond
(1)方法原型
@property NSInteger nanosecond
//纳秒
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitNanosecond fromDate:date];
NSInteger nanosecond = [components nanosecond];
NSLog(@"nanosecond:%d",nanosecond);
输出:2016-01-22 11:54:56.560 NSDate[3826:99433] nanosecond:560009002
10、weekday
(1)方法原型
@property NSInteger weekday
//星期
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitWeekday fromDate:date];
NSInteger weekday = [components weekday];
NSLog(@"weekday:%d",weekday);
输出:2016-01-22 11:59:46.306 NSDate[3894:101729] weekday:6
说明:2016-01-22为星期五,因为美国的第一天是从星期天开始算,所以换算到我们中国的星期需要减1。
11、weekdayOrdinal
(1)方法原型
@property NSInteger weekdayOrdinal
//这个月的第几周
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitWeekdayOrdinal fromDate:date];
NSInteger weekdayOrdinal = [components weekdayOrdinal];
NSLog(@"weekdayOrdinal:%d",weekdayOrdinal);
输出:2016-01-22 12:04:30.976 NSDate[3956:104495] weekdayOrdinal:4
12、quarter
(1)方法原型
@property NSInteger quarter
//季度
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitQuarter fromDate:date];
NSInteger quarter = [components quarter];
NSLog(@"quarter:%d",quarter);
输出:2016-01-22 13:36:49.161 NSDate[4633:133612] quarter:0
13、weekOfMonth
(1)方法原型
@property NSInteger weekOfMonth
//这个月的第几个星期
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitWeekOfMonth fromDate:date];
NSInteger weekOfMonth = [components weekOfMonth];
NSLog(@"weekOfMonth:%d",weekOfMonth);
输出:2016-01-22 13:38:40.169 NSDate[4677:134785] weekOfMonth:4
14、weekOfYear
(1)方法原型
@property NSInteger weekOfYear
//该年的第几个星期
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitWeekOfYear fromDate:date];
NSInteger weekOfYear = [components weekOfYear];
NSLog(@"weekOfYear:%d",weekOfYear);
输出:2016-01-22 13:41:05.867 NSDate[4725:136315] weekOfYear:4
15、yearForWeekOfYear
(1)方法原型
@property NSInteger yearForWeekOfYear
//这个属性暂时不知道是什么意思
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitYearForWeekOfYear fromDate:date];
NSInteger yearForWeekOfYear = [components yearForWeekOfYear];
NSLog(@"yearForWeekOfYear:%d",yearForWeekOfYear);
输出:2016-01-22 13:43:38.975 NSDate[4768:137519] yearForWeekOfYear:2016
16、leapMonth
(1)方法原型
@property(getter=isLeapMonth) BOOL leapMonth
//判断该月是否为润月
(2)实例代码
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitYearForWeekOfYear fromDate:date];
BOOL leapMonth = components.leapMonth;
NSLog(@"leapMonth:%d",leapMonth);
输出:2016-01-22 13:43:38.975 NSDate[4768:137519] yearForWeekOfYear:2016
17、- valueForComponent:
(1)方法原型
- (NSInteger)valueForComponent:(NSCalendarUnit)unit
//返回组件对应的值
(2)实例代码
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setValue:2017 forComponent:NSCalendarUnitYear];
[components setValue:1 forComponent:NSCalendarUnitMonth];
[components setValue:1 forComponent:NSCalendarUnitDay];
NSLog(@"components:%@",components);
输出:2016-01-22 14:19:56.060 NSDate[5264:155372] components:
Calendar Year: 2017
Month: 1
Day: 1