Foundation 框架之 日期與時間
----------日歷 (NSCalendar) 與日期組件 (NSDateComponents)----------
前面 介紹了NSDate的功能和用法,以及NSDate 與NSString 之間的相互轉(zhuǎn)換,假設(shè)有如下場景:程序提
供了3哥輸入框,用于分別輸入年、月、日的數(shù)值,接下來需要將年、月、日數(shù)值轉(zhuǎn)換為NSDate;另一個場景:得到一個NSDate 對象后,程序需要獲取該NSDate 中包含的年份、月份、第幾日。這些都需要將NSDate的各個字段數(shù)值分開提取。為了能分開處理NSDate 對象所包含的各個字段的數(shù)據(jù),Foundation 框架提供了NSCalendar 對象。
//獲取代表公歷的日歷對象calendar
NSCalendar * calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
//獲取日期時間對象
NSDate * date =[NSDate date];
//定義一個時間字段的旗標(biāo),指定會獲取的年、月、日、時、分、秒、工作日的信息
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday;
//獲取不同時間字段信息
NSDateComponents * comp = [calendar components:unitFlags fromDate:date];
//打印所有時間字段信息
NSLog(@"現(xiàn)在是%ld年%ld月%ld日%ld時%ld分%ld秒星期%ld",comp.year,comp.month,comp.day,comp.hour,comp.minute,comp.second,comp.weekday);
//現(xiàn)在是2016年6月19日22時50分41秒星期1(為什么比實(shí)際多一天,筆者也不知道,有知道的朋友留言說一下,謝謝)
//創(chuàng)建一個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
喜歡的話,幫忙點(diǎn)一下喜歡,謝謝!
如果有錯誤之處或者偏差,還請斧正!
歡迎大家留言提問,技術(shù)要交流才能更快成長!