Foundation 框架之 日期与时间
----------日历 (NSCalendar) 与日期组件 (NSDateComponents)----------
前面 介绍了NSDate的功能和用法,以及NSDate 与NSString 之间的相互转换,假设有如下场景:程序提
供了3哥输入框,用于分别输入年、月、日的数值,接下来需要将年、月、日数值转换为NSDate;另一个场景:得到一个NSDate 对象后,程序需要获取该NSDate 中包含的年份、月份、第几日。这些都需要将NSDate的各个字段数值分开提取。为了能分开处理NSDate 对象所包含的各个字段的数据,Foundation 框架提供了NSCalendar 对象。
//获取代表公历的日历对象calendar
NSCalendar * calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
//获取日期时间对象
NSDate * date =[NSDate date];
//定义一个时间字段的旗标,指定会获取的年、月、日、时、分、秒、工作日的信息
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday;
//获取不同时间字段信息
NSDateComponents * comp = [calendar components:unitFlags fromDate:date];
//打印所有时间字段信息
NSLog(@"现在是%ld年%ld月%ld日%ld时%ld分%ld秒星期%ld",comp.year,comp.month,comp.day,comp.hour,comp.minute,comp.second,comp.weekday);
//现在是2016年6月19日22时50分41秒星期1(为什么比实际多一天,笔者也不知道,有知道的朋友留言说一下,谢谢)
//创建一个NSDateComponents对象
NSDateComponents * comp2 = [[NSDateComponents alloc]init];
//给comp2中的字段赋值
comp2.year = 2016;
comp2.month = 6 ;
comp2.day = 18;
comp2.hour = 22;
comp2.minute = 31;
comp2.second = 34;
NSLog(@"%@",[calendar dateFromComponents:comp2]);
//016-06-18 14:31:34 +0000
喜欢的话,帮忙点一下喜欢,谢谢!
如果有错误之处或者偏差,还请斧正!
欢迎大家留言提问,技术要交流才能更快成长!