【发布时间】:2013-04-14 05:02:38
【问题描述】:
我正在努力争取 iOS 的正常运行时间。我正在使用 mach_absolute_time - 但我发现它在睡眠期间暂停。
我找到了这个 sn-p:
- (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 会在毫秒内给你
NSTimeInterval timePassed_ms = [date timeIntervalSinceNow] * -1000.0;并检查NSDate* bootDate = [NSDate dateWithTimeIntervalSince1970: boottime.tv_sec + boottime.tv_usec / 1.e6]; -
获取奇怪的值:1330475899251.326172 2013-04-14 01:08:54.996应用[1486:54.99775.1707-04-14 01:08:54.997应用[1486:54.997 2013-04 2013-04 2013-04 -14 01:08:55.012 应用程序[1486:c07] 1365915981691.614258
-
自 1970 年以来经过的秒数并不奇怪...... :)
-
但数字实际上是随机变化的:P
-
时间怎么会一样呢?时间总是在变化:)
标签: ios objective-c uptime