NSDateFormatterで24時間表記が欲しいのに午前午後が出てくる!
NSDateFormatter を使って現在の時間を 24時間表記の文字列で欲しいと思った。
で、こんなコードにしてみた。
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setTimeZone:[NSTimeZone systemTimeZone]]; [formatter setDateFormat:@"HH mm ss"]; NSString *todayString = [formatter stringFromDate:[NSDate date]];
普段、自分の iPhone は「設定」-「一般」-「日付と時刻」の「24時間表示」を「オン」にして使っているので、上記のコードで返ってきたのは例えば 12時34分56秒なら「12 34 56」という文字列。
だけど、この「24時間表示」を「オフ」にしてると返ってくるのは「午後00 34 56」という文字列! ビックリ!
え〜?大文字の H は 24時間表記だよね???
というわけでググるとありました!
なるほど、locale の設定をしっかりしないとダメだということですね。
それならちゃんと NSDateFormatter に NSLocale を設定しましょう。
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setLocale:[NSLocale systemLocale]]; [formatter setTimeZone:[NSTimeZone systemTimeZone]]; [formatter setDateFormat:@"HH mm ss"]; NSString *todayString = [formatter stringFromDate:[NSDate date]];
というわけで、これで「24時間表示」が「オフ」になっていても「12 34 56」が返ってくるようになりました。