和暦設定iPhoneでアプリ内の西暦表示がおかしくなっちゃった!



こんにちは〜 磯崎@OfficeHAKONIWA でございます。

今日はサクッとタイトルの件、、、

アプリ内の一覧表示とかで何かと日付表示することが多いです。

仮にcopydateにNSDate定義の日付が入っていたとして、

今までは

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyy-MM-dd(E) HH:mm:ss"];
NSLog(@”copydate: %@”, [formatter stringFromDate:copydate]);

こうしてformatter通して

2012-12-05(水)11:16:22

という感じで西暦年月日+曜日+時刻を出力していました。

が、おそらくiOS6から、できなくなっちゃった。

具体的にはiPhoneのカレンダー設定で和暦にしているときで

「設定」ー「一般」ー「言語環境」ー「カレンダー」の和暦チェックです。

2012-12-05(水)11:16:22 が

0024-12-05(水)11:16:22 になりますです。

そんなもんで、新作を出すときにぱぱっと探して「な〜んだ、yyyyをYYYYにすりゃいいんじゃん。」と安易にやってた、ですが、これも誤りだと判明して。。。

どうやらNSDateFormatter定義にカレンダーの設定が必要だった模様。

いろいろあるけどグレゴリ暦でOKでした。

修正後はこんな感じになりました。

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
NSCalendar *gregorianCalendar =[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
[formatter setCalendar:gregorianCalendar];
[formatter setDateFormat:@"yyyy-MM-dd(E) HH:mm:ss"];
NSLog(@”copydate: %@”, [formatter stringFromDate:copydate]);
[gregorianCalendar release];

これだけの話で、カレンダー未定義なフォーマッターを使ってたのがそもそも悪かった気がします。

同じ表示しているアプリも多数見かけたので、と思ってシェアしました。

カレンダーの定義してないかも、という人は要チェックです!

One thought on “和暦設定iPhoneでアプリ内の西暦表示がおかしくなっちゃった!

  1. Pingback: Cocoamix.jp » [Xcode]和暦表示への対応

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>