iOS

2013-07-11, ios

現在時の取得

4種類の時刻取得方法です(探せばもっとありそうな感じもします)。1つめがStackoverflowでイチオシされている方法で、ゲームやアニメーションなどタイミングが重要な場面で役に立つ指標となる値だそうです。NSDateを使うとネットワーク経由で時刻を調整している時に挙動がおかしくなることがあるのだそうですが、大体今何時?というのを知りたい程度であれば問題なさそうです。NSDateでの取得にも何種類かあって、2001年を起点とする方法と1970年を起点とする(昔ながらの)方法とがあります(下記例の2番目と3番目)。他の処理系とデータをやりとりするなら後者の方が便利かもしれません。4つめはCのtime関数を使う方法です。これは3番目の方法と大体同じ値を返しますが、ミリ秒単位の情報が捨てられていて、データが格納される型も4バイトの整数と、かなり小さめなので、取り扱いには注意が必要です。

CFTimeInterval c = CACurrentMediaTime();
NSTimeInterval d1 = [NSDate timeIntervalSinceReferenceDate];
NSTimeInterval d2 = [[NSDate date] timeIntervalSince1970];
time_t t;
time(&t);

NSLog(@"CACurrentMediaTime()=%f ,%ld",c, sizeof(CFTimeInterval));
NSLog(@"[NSDate timeIntervalSinceReferenceDate]=%f, %ld",d1,sizeof(NSTimeInterval));
NSLog(@"[[NSDate date] timeIntervalSince1970=%f",d2);
NSLog(@"time=%ld, %ld",t,sizeof(time_t));
結果(抜粋)
CACurrentMediaTime()=15270.029104 ,8
[NSDate timeIntervalSinceReferenceDate]=395209345.829579, 8
[[NSDate date] timeIntervalSince1970=1373516545.829593
time=1373516545, 4

参考URL

この記事は役に立ちましたか?