NSDateFormatter格式詳細列表一覽

前言

iOS開發(fā)中NSDateFormatter是一個很常用的類,用于格式化NSDate對象兼蕊,支持本地化的信息才菠。與時間相關的功能還可能會用到NSDateComponents類和NSCalendar類等。本文主要列出NSDateFormatter常見用法妹蔽。
NSDate對象包含兩個部分罗丰,日期(Date)和時間(Time)神帅。格式化的時間字符串主要也是針對日期和時間的。[以下代碼中開啟了ARC萌抵,所以沒有release找御。]

基礎用法

NSDate* now = [NSDate date];
NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
fmt.dateStyle = kCFDateFormatterShortStyle;
fmt.timeStyle = kCFDateFormatterShortStyle;
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSString* dateString = [fmt stringFromDate:now];
NSLog(@"%@", dateString);

打印輸出:10/29/12, 2:27 PM
這使用的系統(tǒng)提供的格式化字符串,通過 fmt.dateStyle 和 fmt.timeStyle 進行的設置绍填。實例中使用的參數(shù)是 kCFDateFormatterShortStyle霎桅,此外還有:

typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles
    kCFDateFormatterNoStyle = 0,       // 無輸出
    kCFDateFormatterShortStyle = 1,    // 10/29/12, 2:27 PM
    kCFDateFormatterMediumStyle = 2,   // Oct 29, 2012, 2:36:59 PM
    kCFDateFormatterLongStyle = 3,     // October 29, 2012, 2:38:46 PM GMT+08:00
    kCFDateFormatterFullStyle = 4      // Monday, October 29, 2012, 2:39:56 PM China Standard Time
};

自定義區(qū)域語言

如上實例中,我們使用的是區(qū)域語言是 en_US讨永,指的是美國英語滔驶。如果我們換成簡體中文,則代碼是:

fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];

則對應的輸出為:

typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles
    kCFDateFormatterNoStyle = 0,       // 無輸出
    kCFDateFormatterShortStyle = 1,    // 12-10-29 下午2:52
    kCFDateFormatterMediumStyle = 2,   // 2012-10-29 下午2:51:43
    kCFDateFormatterLongStyle = 3,     // 2012年10月29日 GMT+0800下午2時51分08秒
    kCFDateFormatterFullStyle = 4      // 2012年10月29日星期一 中國標準時間下午2時46分49秒
};

世界通用的區(qū)域語言代碼住闯,詳見 International Components for Unicode (ICU), http://userguide.icu-project.org/formatparse/datetime

自定義日期時間格式

NSDateFormatter提供了自定義日期時間的方法,主要是通過設置屬性 dateFormat澳淑,常見的設置如下:

NSDate* now = [NSDate date];
NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
fmt.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss";
NSString* dateString = [fmt stringFromDate:now];
NSLog(@"%@", dateString);

打印輸出:2012-10-29T16:08:40

除了上面列出的比原,還可以指定很多格式,詳見http://userguide.icu-project.org/formatparse/datetime杠巡。
結合設置Locale量窘,還可以打印出本地化的字符串信息。

NSDate* now = [NSDate date];
NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
fmt.dateFormat = @"yyyy-MM-dd a HH:mm:ss EEEE";
NSString* dateString = [fmt stringFromDate:now];
NSLog(@"\n%@", dateString);

打印輸出:2012-10-29 下午 16:25:27 星期一

自定義月份星期等字符

NSDateFormatter中同樣提供了相應的方式氢拥,去修改這些字符蚌铜。一般情況下锨侯,使用相應區(qū)域語言下面的默認字符就OK了。但是你的確有這個需求冬殃,那么也是可以辦到的囚痴。相應的方法非常多,如下:

Managing AM and PM Symbols

  • AMSymbol
  • setAMSymbol:
  • PMSymbol
  • setPMSymbol:

Managing Weekday Symbols

  • weekdaySymbols
  • setWeekdaySymbols:
  • shortWeekdaySymbols
  • setShortWeekdaySymbols:
  • veryShortWeekdaySymbols
  • setVeryShortWeekdaySymbols:
  • standaloneWeekdaySymbols
  • setStandaloneWeekdaySymbols:
  • shortStandaloneWeekdaySymbols
  • setShortStandaloneWeekdaySymbols:
  • veryShortStandaloneWeekdaySymbols
  • setVeryShortStandaloneWeekdaySymbols:

Managing Month Symbols

  • monthSymbols
  • setMonthSymbols:
  • shortMonthSymbols
  • setShortMonthSymbols:
  • veryShortMonthSymbols
  • setVeryShortMonthSymbols:
  • standaloneMonthSymbols
  • setStandaloneMonthSymbols:
  • shortStandaloneMonthSymbols
  • setShortStandaloneMonthSymbols:
  • veryShortStandaloneMonthSymbols
  • setVeryShortStandaloneMonthSymbols:

Managing Quarter Symbols

  • quarterSymbols
  • setQuarterSymbols:
  • shortQuarterSymbols
  • setShortQuarterSymbols:
  • standaloneQuarterSymbols
  • setStandaloneQuarterSymbols:
  • shortStandaloneQuarterSymbols
  • setShortStandaloneQuarterSymbols:

Managing Era Symbols

  • eraSymbols
  • setEraSymbols:
  • longEraSymbols
  • setLongEraSymbols:
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末审葬,一起剝皮案震驚了整個濱河市深滚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涣觉,老刑警劉巖痴荐,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異官册,居然都是意外死亡生兆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門膝宁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸦难,“玉大人,你說我怎么就攤上這事昆汹∶魉ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵满粗,是天一觀的道長辈末。 經常有香客問我,道長映皆,這世上最難降的妖魔是什么挤聘? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮捅彻,結果婚禮上组去,老公的妹妹穿的比我還像新娘。我一直安慰自己步淹,他們只是感情好从隆,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缭裆,像睡著了一般键闺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上澈驼,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天辛燥,我揣著相機與錄音,去河邊找鬼。 笑死挎塌,一個胖子當著我的面吹牛徘六,可吹牛的內容都是我干的。 我是一名探鬼主播榴都,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼待锈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缭贡?” 一聲冷哼從身側響起炉擅,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阳惹,沒想到半個月后谍失,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡莹汤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年快鱼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纲岭。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抹竹,死狀恐怖,靈堂內的尸體忽然破棺而出止潮,到底是詐尸還是另有隱情窃判,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布喇闸,位于F島的核電站袄琳,受9級特大地震影響,放射性物質發(fā)生泄漏燃乍。R本人自食惡果不足惜唆樊,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刻蟹。 院中可真熱鬧逗旁,春花似錦、人聲如沸舆瘪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽英古。三九已至淀衣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哺呜,已是汗流浹背舌缤。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留某残,地道東北人国撵。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像玻墅,于是被迫代替她去往敵國和親介牙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容