我正在尝试获取iOS的正常运行时间。我曾经使用过mach_absolute_time,但是发现它在睡眠期间会暂停。
我找到了这段代码:
- (time_t)uptime
{
struct timeval boottime;
int mib[2] = {CTL_KERN, KERN_BOOTTIME};
size_t size = sizeof(boottime);
time_t now;
time_t uptime = -1;
(void)time(&now);
if (sysctl(mib, 2, &boottime, &size, NULL, 0) != -1 && boottime.tv_sec != 0)
{
uptime = now - boottime.tv_sec;
}
return uptime;
}
它能够完成任务,但是它返回的是整秒。有没有办法将毫秒数提取出来?
NSTimeInterval timePassed_ms = [date timeIntervalSinceNow] * -1000.0;
并且检查NSDate* bootDate = [NSDate dateWithTimeIntervalSince1970: boottime.tv_sec + boottime.tv_usec / 1.e6];
- Anoop Vaidya