I love iPhone, Android, Cocos2d-x
iPhone アプリ開発メモ 時刻を取得する
※iPhone アプリを開発する勉強中です。自分用に勉強したときのメモです。
非公開API を使用していたためコードを改めました(2010.12.7)
現在時刻を取得する方法
NSTimer で1秒ごとに onTimer メソッドを呼び出し、UILabel clock の内容を更新する。
- (void)onTimer { NSDate *now = [NSDate date]; [formatter setDateFormat:@"kk"]; int h = [[formatter stringFromDate:now] intValue]; [formatter setDateFormat:@"mm"]; int m = [[formatter stringFromDate:now] intValue]; [formatter setDateFormat:@"ss"]; int s = [[formatter stringFromDate:now] intValue]; clock.text = [NSString stringWithFormat:@"%02d:%02d:%02d", h, m, s]; } - (void)viewDidLoad { timer = [NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; }
関連する投稿
6 comments
コメントをどうぞ
Additional comments powered by BackType
iphone内部の時計を利用しているのだと思いますが、
現在の正確な時刻を取得するにはどうしたらいいでしょうか?
いつも大変参考にさせていただいてます。
こちらの「dateWithCalendarFormat」非公開APIじゃないですか?
SDK付属のドキュメントででてこないです。
そしてこんな記事もあります。
http://taxpon.com/?p=556
ゆきさん、ご指摘いただきましてありがとうございました。コードを修正させていただきました。
[...] とりあえず、時間を取得するNSDateというクラスがあるということで、ググってみたらコチラのページで紹介されていました。 ソースコードは、以下のようになりました。 [...]
[...] とりあえず、時間を取得するNSDateというクラスがあるということで、ググってみたらコチラのページ(「Sun Limited Mt.」)で紹介されていました。 ソースコードは、以下のようになりました。 – (void)viewWillAppear:(BOOL)animated// { self.view.layer.contents =(id)[UIImage imageNamed:@"oboeyo_clock_back.png"].CGImage; CALayer *baseLayer =[self.view layer]; CALayer *layer_clock_plate =[CALayer layer]; layer_clock_plate.bounds =CGRectMake(0, 0, 303, 303); layer_clock_plate.position =CGPointMake(160, 180); layer_clock_plate.contents =(id)[UIImage imageNamed:@"oboeyo_clock_plate.png"].CGImage; [baseLayer addSublayer:layer_clock_plate]; CALayer *sec_hand =[CALayer layer]; sec_hand.bounds =CGRectMake(0, 0, 10, 150); sec_hand.anchorPoint =CGPointMake(0.5, 0.87); sec_hand.position =CGPointMake(160, 180); sec_hand.contents =(id)[UIImage imageNamed:@"sec_hand.png"].CGImage; [baseLayer addSublayer:sec_hand]; CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform"]; // 回転の開始と終わりの角度を設定 単位はラジアン anim.fromValue = [NSNumber numberWithDouble:0]; anim.toValue = [NSNumber numberWithDouble:360 * M_PI/180]; // 回転軸の設定 anim.valueFunction = [CAValueFunction functionWithName:kCAValueFunctionRotateZ]; //1回転あたりのアニメーション時間 単位は秒 anim.duration = 60; // アニメーションのリピート回数 anim.repeatCount = HUGE_VALF; // アニメーションをレイヤーにセット [sec_hand addAnimation:anim forKey:nil]; NSDate *now =[NSDate date]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"kk"]; int now_h = [[formatter stringFromDate:now] intValue]; [formatter setDateFormat:@"mm"]; int now_m = [[formatter stringFromDate:now] intValue]; [formatter setDateFormat:@"ss"]; int now_s = [[formatter stringFromDate:now] intValue]; NSLog(@"%d:%d:%d", now_h, now_m, now_s); // [super viewWillAppear:animated]; } [...]
3cheapside…
…