暫時紀錄一下。有關於NSDateFormatter的用法。
之前我有寫過一次將NSDate表示成NSString的作法,只是那種是寫死的,只有三個選擇,萬一你只想表示年份和月份而不顯示日期呢?當然你可以自己設定格式,像是:
之前我有寫過一次將NSDate表示成NSString的作法,只是那種是寫死的,只有三個選擇,萬一你只想表示年份和月份而不顯示日期呢?當然你可以自己設定格式,像是:
[formatter setDateFormat:@"MM dd"];
這樣就只會顯示月份和日期,但是你就沒有了本地化的優點了。所以當你又想要本地化,又想要客製化你顯示的時間日期,你可以考慮這個方法:
dateFormatFromTemplate: options: locale:
用此方法建立格式的實例,就可以達到這兩個需求。想要建立這樣的NSDateFormatter寫法概念如下:
- 建立NSDateFormatter實例
- 建立字串格式
- 將NSDateFormatter實例的格式設定為此字串格式
一二兩步驟並無相對關係,所以可任意對調。以下是範例:
// 建立NSDateFormatter實例
NSDateFormatter *dateFormatter = [NSDateFormatter new];
// 建立字串格式
NSString *dateString = [NSDateFormatter dateFormatFromTemplate:@"MMMM dd" options:0 locale:[NSLocale currentLocale]];
// 設定
[dateFormatter setDateFormat:dateString];
重點是第二步,他建立的是NSString的實例。第二步的方法,第一個參數是你的格式,第二個參數很有趣,目前你只要輸入0就好,第三個參數就是讓系統去選擇目前的本地設定。最重要的是第三個參數,這樣就能達到本地化的效果。
第一個參數很有趣,我大概測了幾種:
@"MMdd" // output:03/12
@"MMMdd" // output:3月12日
@"MMMMdd" // output:3月12日
第一個參數很有趣,我大概測了幾種:
@"MMdd" // output:03/12
@"MMMdd" // output:3月12日
@"MMMMdd" // output:3月12日
留言
張貼留言