NSDateFormatterとNSLocale

iOS SDKには、NSDateやNSCalendarなど、日付を取り扱うための強烈なライブラリーが存在する。
NSDateの情報を、実際の表示に使用する際に活躍するのが、NSDateFormatterである。
簡単に言えば、NSDateとNSStringの間の橋渡しをしてくれるのである。
こんな感じである。


NSDate* dateNow = [ NSDate Date ];
NSDateFormatter dfTest = [ [ NSDateFormatter alloc ] init ];
[ dfTest setDateFormat: @"yyyy/MM/dd HH:mm:ss ZZZZ" ];
NSString* stringDateNow = [ dfTest stringFromDate: dateNow ];
これはこれで便利なのだが、日付のフォーマットは国毎に異なるので、これでは汎用という意味ではあまり都合がよくない。


幸いなことに、iOSでは国毎のデフォルトのフォーマットを設定している、重さや長さなどである。
ここに日付と時間のフォーマットも存在する。
これを利用すると、国毎のフォーマットの緩衝をlet OS decideとできる。
こんな感じである。


NSDate* dateNow = [ NSDate Date ];
NSDateFormatter dfTest = [ [ NSDateFormatter alloc ] init ];
[ dfTest setLocale: [ NSLocale currentLocale ] ];
[ dfTest setDateStyle: NSDateFormatterMediumStyle ];
[ dfTest setTimeStyle: NSDateFormatterLongStyle ];
NSString* stringDateNow = [ dfTest stringFromDate: dateNow ];