UIDatePickerから日付の文字列を取る

なんだか凄いお久しぶりですね。すいません。
諸事情がありましてブログ更新する気力が失せていたんですが
これから、コツコツとでも備忘録的に更新していければいいなと。


さて、本題。


UIDatePickerから日付の文字列を取る

まぁ、こんなのは簡単なことではあるんですが。
単純なやり方を書くと、こんな感じ。

NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyyMMdd"];
NSString* dateString = [formatter stringFromDate:self.datePicker.date];

しかし、これでは問題があります。
例えばユーザーが設定で「和暦」を設定していた場合、取得できた「dateString」の値が
「00240514」などの異常な値になってしまうのです。


これを回避する方法を検索するのに色々と余計な情報ばかり
出て来たので、私としての解決方法。
NSDateFormatterにLocaleを設定する


こう言うことです。

NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
NSLocale* local = [[[NSLocale alloc] initWithLocaleIdentifier:@"es_ES_PREEURO"] autorelease];
[formatter setLocale:local];
[formatter setDateFormat:@"yyyyMMdd"];
NSString* dateString = [formatter stringFromDate:self.datePicker.date];


こんな感じに指定することで、ユーザーがカレンダーとして「和暦」を
選択していた場合でも「20120514」と言った文字列を取得できます。
NSDateFormatterのDateFormatに関してはググってください。


ここで取得した文字列をどこかに保存しておいて、再度UIDatePickerに文字列を日付へ
変換して設定するときに和暦だとおかしくなったんですけど。。。とかあるかも知れませんが、
ちゃんとその場合の変換に使っているNSDateFormatterにもLocale指定してくださいね。