NSDateFormatterを使用する
とりあえずではあるが、NSDateFormatterを使用してみる。
NSDate *date;
NSDateFormatter *dateFormatter;
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter stringFromDate:date];
とりあえずこれで、NSDateFormatterを使用して、文字列として値を返せる。
上記例では、時間は表示せず、日付をMediumStyleで出力する。
ちなみに、
[dateFormatter setDateFormat:@"HH:mm 'on' EEEE MMMM d"];
09:00 on Monday june 12
[dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm"];
2009/01/12 12:34
といった風に表示される。
小数点以下の処理について
小数点以下を、四捨五入、切り上げ、切り捨て、の処理をどうするかがわからなかった。
エクセルくらいしか普段扱わないので、round , roundup , rounddown くらいしか
思いつかなかったが、Cは違うのね。
四捨五入は round (double)
切り上げは ceil (double)
切り捨ては floor (double)
こんなことに大分時間をついやしてしまった・・・
UITableViewのスクロールをロックするには
カテゴリはUITableViewというよりは、UIScrollViewですが。
UITableView *tableView = [[UITableView alloc] init];
tableView.scrollEnabled = NO;
これでスクロールしなくなります。
UIDatePickerの言語表示を変えようと頑張ったがダメだった
やりたかったことは、言語環境が英語の状態で、設定を変えることなく、
表示されるUIDatePickerは日本語表記にしたかったのだが、上手くいかなかった。
いろいろ試した結果を残しておく。
言語環境の地域に応じた書式を「日本」にすると、日本語表示でUIDatePickerが表示される。

まずはNSCalendarについて。
使ったことが無いので、どういう働きをしているのか良く分かっていない。
リファレンスを見ると、週始まりの曜日だとか、そういったことを管理しているようなので
今回の項目とは関係なさそうではあるが。
言語環境を書式を日本にして、currentCalendarを見てみる。
NSLog(@"%@",[[NSCalendar currentCalendar] calendarIdentifier]);
上記コードを実行したら、ログにはgregorianと表示される。
言語環境の書式を英語にしてもログにはgregorianと表示された。
どうやらやはり関係ないようだ。
ちなみに、日本のカレンダーを作成してログに排出してみると、
NSCalendar *tempCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:@"japanese"];
NSLog(@"%@",[tempCalendar calendarIdentifier]);
結果はjapaneseであった。
当然ではるが、このtempCalendarをUIDatePicker.calendarに入れてやっても
表示は変わらなかった。
datePicker.calendar = tempCalendar;
しかし下記コードの結果はきちんtのjapaneseになっている。
NSLog(@"%@",[datePicker.calendar calendarIdentifier]);
ひつこいようだが、やはりUIDatePickerの表示とCalendarは関係ないようだ。
何が変わったかというと、tableViewにdatePickerの値を使用して日付を表示していたが、
この年数の値がおかしくなった。datePickerで2008年を示していても、ラベルに
表示される値は3996年とか表示される。

NSCalendarは関係ないということで、今度はNSLocaleに目をつけて、
NSLocaleを作ってUIDatePickerに入れてやったが、結果は同じで、
UIDatePickerの表現は変わらなかった。
NSLocale *tempLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja-JP"];
datePicker.locale = tempLocale;
というか、datePicker.localeが書き変わっていなかった。
NSLog(@"tempLocale :%@",[tempLocale localeIdentifier]);
上記で、datePickerのlocale設定を見てみると、tempLocaleを入れてやったと
思っていたが、結果は「en-US」のままだった。
NSLocaleに関する勉強不足というところか・・・
2週間程、毎日これを頑張ったが、結局目的達成できず。
もう諦めた。
実は興味があっただけ、ということから始めたことで、必ずしも必要ではない。
しかし気になる・・・






