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指定してくださいね。