欲しいもの
Language | Calendar | output |
---|---|---|
日本語 | 和暦 | 平成27年9月 |
西暦 | 2015年9月 | |
English | Japanese | September 27 Heisei |
Gregorian | September 2015 |
英語表記は、カンマの有無とかよく分からないので、大体こんな感じということで。
当然、英語だけではなく他の言語でもそれなりの表記にならないといけない。
NSDateIntervalFormatterStyle
まずはスタイル指定による表示を調査。
NSDateFormatter *df = [NSDateFormatter new];
df.dateStyle = NSDateIntervalFormatterFullStyle;
NSLog(@"dateFormat=%@", df.dateFormat);
NSLog(@"output=%@", [df stringFromDate:[NSDate date]]);
こんな感じで、Language/Calendar/Styleを変えつつ調査。
Language | Calendar | Style | dataFormat | output |
---|---|---|---|---|
日本語 | 和暦 | Full | Gy年M月d日EEEE | 平成27年9月25日金曜日 |
Long | Gy年M月d日 | 平成27年9月25日 | ||
Medium | GGGGGyy/MM/dd | H27/09/25 | ||
Short | GGGGGyy/MM/dd | H27/09/25 | ||
日本語 | 西暦 | Full | y年M月d日EEEE | 2015年9月25日金曜日 |
Long | y年M月d日 | 2015年9月25日 | ||
Medium | y/MM/dd | 2015/09/25 | ||
Short | y/MM/dd | 2015/09/25 | ||
English | Japanese | Full | EEEE, MMMM d, y G | Friday, September 25, 27 Heisei |
Long | MMMM d, y G | September 25, 27 Heisei | ||
Medium | MMM d, y G | Sep 25, 27 Heisei | ||
Short | M/d/y GGGGG | 9/25/27 H | ||
English | Gregorian | Full | EEEE, MMMM d, y | Friday, September 25, 2015 |
Long | MMMM d, y | September 25, 2015 | ||
Medium | MMM d, y | Sep 25, 2015 | ||
Short | M/d/yy | 9/25/15 |
当然のことながら「日」まで表示されるので使えない。
Longの「日」が無ければOKな感じ。
dateFormatFromTemplate:options:locale:
ざっくりとした書式からイイ感じの書式を生成してくれるメソッド(たぶん)。
NSDateFormatter *df = [NSDateFormatter new];
df.dateFormat = [NSDateFormatter dateFormatFromTemplate:@"yM"
options:0
locale:[NSLocale currentLocale]];
NSLog(@"dateFormat=%@", df.dateFormat);
NSLog(@"output=%@", [df stringFromDate:[NSDate date]]);
こんな感じで、Language/Calendarを変えつつ調査。
Language | Calendar | dataFormat | output |
---|---|---|---|
日本語 | 和暦 | GGGGGy/M | H27/9 |
西暦 | y/M | 2015/9 | |
English | Japanese | M/y GGGGG | 9/27 H |
Gregorian | M/y | 9/2015 |
なんかいけそうな気がしてきたので書式をいじってみた結果‥
書式
@"yMMMM"
Language | Calendar | dataFormat | output |
---|---|---|---|
日本語 | 和暦 | Gy年M月 | 平成27年9月 |
西暦 | y年M月 | 2015年9月 | |
English | Japanese | MMMM y G | September 27 Heisei |
Gregorian | MMMM y | September 2015 | |
ภาษาไทย | ญี่ปุ่น | MMMM G y | กันยายน เฮเซ 27 |
คริสต์ศักราช | MMMM G y | กันยายน ค.ศ. 2015 |
パーフェクト!
めでたいのでタイ語のオマケ付!
しかし、M
を増やすと年に影響が出る(「平成」とか「年」とか表示される)のが気持ち悪い。
まとめ
NSDateFormatter *df = [NSDateFormatter new];
df.dateFormat = [NSDateFormatter dateFormatFromTemplate:@"yMMMM"
options:0
locale:[NSLocale currentLocale]];
NSLog(@"output=%@", [df stringFromDate:[NSDate date]]);