NSDate
- NSDate對象用來表示一個具體的時間點颜矿。
- NSDate是一個類簇,我們所使用的NSDate對象嫉晶,都是NSDate的私有子類的實體或衡。
- NSDate存儲的是GMT時間,使用的時候會根據(jù) 當前應用 指定的 時區(qū) 進行時間上的增減车遂,以供計算或顯示封断。
獲取當前時間,獲得的時0市區(qū)的時間跟北京時間相差8小時
NSDate *currentDate = [NSDate date]; // GMT NSLog(@"currentDate :%@",currentDate);
** NSDateFormatter**
NSDateFormatter是NSFormatter的子類舶担,另坡疼,NSFormatter的用途是“將數(shù)據(jù)在字符串與特定類型的對象之間轉(zhuǎn)換”,目前NSFormatter只有兩個子類NSNumberFormatter和NSDateFormatter衣陶。
NSDateFormatter提供了許多已定義好的時間格式柄瑰,下面我們只提供例子,具體參考文檔
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateStyle = NSDateFormatterMediumStyle; dateFormatter.timeStyle = NSDateFormatterMediumStyle;
開發(fā)人員可根據(jù)喜歡自定義時間格式剪况。格式化參數(shù)在本文檔最后教沾。
dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 中
將時間字符串轉(zhuǎn)換到NSDate對象,一般都是使用"年月日 時分秒"译断,數(shù)據(jù)庫中的date類型基本上也是這樣的時間類型授翻。 格式一般為:yyyy-MM-dd HH:mm:ss。
- (NSDate *)dateFromString:(NSString *)dateString format:(NSString *)format { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = format; return [dateFormatter dateFromString:dateString]; }
將NSDate對象轉(zhuǎn)換成特定格式的字符串。
NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
// stringFromDate 將日期類型格式化堪唐,轉(zhuǎn)為NSString 類型
NSString *current = [formatter stringFromDate:now];
轉(zhuǎn)換后的字符串會根據(jù)設備的“區(qū)域格式”巡语,顯示特定語言的結(jié)果。假如程序需要保證不同語言環(huán)境下顯示一致淮菠,請注意這方面的問題男公,使用其他代替方法!
附:NSDateFormatter格式化參數(shù)如下:
G: 公元時代合陵,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月枢赔,顯示為1-12
MMM: 月,顯示為英文月份簡寫,如 Jan
MMMM: 月拥知,顯示為英文月份全稱踏拜,如 Janualy
dd: 日,2位數(shù)表示举庶,如02
d: 日执隧,1-2位顯示揩抡,如 2
EEE: 簡寫星期幾户侥,如Sun
EEEE: 全寫星期幾,如Sunday
aa: 上下午峦嗤,AM/PM
H: 時蕊唐,24小時制,0-23
K:時烁设,12小時制替梨,0-11
m: 分,1-2位
mm: 分装黑,2位
s: 秒副瀑,1-2位
ss: 秒,2位
S:毫秒
常用日期結(jié)構(gòu):
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
MM dd yyyy
注意:yyyy是小寫的恋谭;大寫的YYYY的意思有些不同——“將這一年中第一周的周日當作今年的第一天”糠睡,因此有時結(jié)果和yyyy相同,有時就會不同疚颊。