2012年9月9日日曜日

iOS 時間を文字列にする(NSDateFormatter)

前回, NSDate や, NSDateComponents ついて触れました。

NSDate, NSDateComponents でiOSの時間を制する

NSDate, NSDateComponents でiOSの時間を制する(その2)

そして, この操作した時間を今度は, 文字として出して, UILabel や self.title に入れるというのが今回の課題です。


iOS で NSDate から, 文字に置き換えるには Javaでいえば, SimpleDateFormat  とかにあたる, NSDateFormatter というのがあります

早速使ってみましょう。

ex)   2012/09/09 14:53 という書式にしてみる

NSDate *date = [NSDate date];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
NSString *str = [formatter stringFromDate:date];

※YYYY だと 問題があることをご指摘いただきました。(コメント参照)
ありがとうございます。 YYYY -> yyyy NSDateFormatter を作成して,  setDateFormat で書式をセットします

最後に, stringFromDate で NSString * を取り出すことができました

簡単な書式の例を出してみます

yyyy/MM/dd                           2012/09/09
yyyy/MM                               2012/09
HH:mm                                   15:56
yyyy/MM/dd HH:mm:ss            2012/09\09 14:56:42
yyyy-MM-dd                          2012-09-09

2 件のコメント:

  1. setDateFormat:@"YYYY/mm/dd" という感じに大文字でYYYYを設定すると年末の数日間だけ年が正しくない値になります。正しくは小文字でyyyyですのでご注意。
    詳しくは
    http://takesita.seesaa.net/article/295203529.html?1349225507

    返信削除
  2. 知りませんでした。そんな違いがあるんですね。参考にさせていただきました。ご指摘ありがとうございます。

    返信削除