OC之日期與時間類續(xù):日歷NSCalendar類

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ù)要交流才能更快成長!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容