在代碼是在我的iOS應用程序反覆運行,我有:爲什麼時間在這裏凍結?自1970年以來,每次都可以獲得秒數嗎?
// int timeStampMilliseconds = (ceil([[NSDate date] timeIntervalSince1970] * 1000.0));
// double timeStampMilliseconds = [[NSDate date] timeIntervalSince1970] * 1000.0;
// double timeStampMilliseconds = CACurrentMediaTime() * 1000;
double timeStampMilliseconds = CFAbsoluteTimeGetCurrent() * 1000.0;
double hours = fmodf(timeStampMilliseconds, 86400000)/3600000.0;
double minutes = fmodf(timeStampMilliseconds, 3600000)/60000.0;
double seconds = fmodf(timeStampMilliseconds, 60000)/1000.0;
NSLog(@"Milliseconds: %lf, Hours: %lf, minutes: %lf, seconds: %lf", timeStampMilliseconds, hours, minutes, seconds);
的三種方法,我知道的獲得時間[NSDate date] timeIntervalSince1970
,CACurrentMediaTime()
和CFAbsoluteTimeGetCurrent()
當我運行它們,timeIntervalSince1970和CFAbsoluteTimeGetCurrent獲得的UTC時間在幾秒鐘內...但奇怪的是,當達到日誌語句時,milleseconds以適當的速度上升,但小時,分鐘和秒在它們啓動時被凍結。鍾針不動。
CACurrentMediaTime顯示更多人所期望的;它準確地說明了自某個時間標記以來已經過去了多少時間,這意味着秒,分鐘和小時都在增加。
我想我可以做一個解決方法行爲,讓初始化程序初始化一個常量到TimeIntervalSince1970減去CACurrentMediaTime,然後在引用的代碼中添加保存的常量和CACurrentMediaTime。但是我想知道發生了什麼,以及爲什麼在三種計時方法中的兩種計時方法中,以毫秒爲單位的原始數量反映了小時,分鐘和秒鐘的更新,但小時,分鐘和秒鐘被凍結。
感謝,
比我問的要好。謝謝! – JonathanHayward