/*
現在網上大多的獲取NSDate年月日時分秒的方法,都在mac os 10.10被蘋果公司標記成不建議使用了.
查了好久,終於找到了一個蘋果公司推薦使用方法, 以下內容分享給大家
*/
/* 當前時間對象[dateNow] */ NSDate *dateNow = [NSDate date]; /* 日歷類[calendar] 注意: 一定要用[NSCalendar currentCalendar]初始化, 如果用[[NSCalendar alloc] init]初始化, 獲取的時間會是隨機式. */ NSCalendar *calendar = [NSCalendar currentCalendar]; /* 變量 */ NSInteger year; //年 NSInteger month; //月 NSInteger day; //日 NSInteger hour; //時 NSInteger minute; //分 NSInteger second; //秒 NSInteger nanosecond; //10^-9秒 /* 使用[calendar]對象從[dateNow]中獲取 [hour] [minute] [second] [nanosecond] 注意: '&'是取地址符, 把變量的"地址"傳過去, 函數會把相應的值寫入這個"地址", 我們的變量裡面就存入相應的值了. */ [calendar getHour:&hour minute:&minute second:&second nanosecond:&nanosecond fromDate:dateNow]; /* 使用[calendar]對象從[dateNow]中獲取[year],[month],[day]. 注意: [Era]是公元的意思, 現在的日期都會為1. 由於沒有文檔介紹這個值的含義, 使用的需求度也不高, 暫時先不研究這個. */ [calendar getEra:nil year:&year month:&month day:&day fromDate:dateNow]; /* 打印獲取的值 注意: '%d'是32位整數. '%ld'是64位整數. '%2ld'是64位整數, 如果不足2位則在左邊補充空格. '%02ld'是64位整數, 如果不足2位則在左邊補充'0'. 輸出結果: 2015-03-26 13:44:34.582 MyCake[3020:106505] 2015-03-26 13:44:34.582 結果說明: 對比一下, 系統輸出的時間, 和你的時間是不是一樣的. 而且毫米數字都一樣, 說明這種寫法效率非常高. */ NSLog(@"%04ld-%02ld-%02ld %02ld:%02ld:%02ld.%03ld", year, month, day, hour, minute, second, nanosecond/1000000);