- NSProcessInfo 计算的开机时间不准确
- 具体哪里不准确呢?
- 举个例子:项目中需要展示开机时间,一开始使用NSProcessInfo计算的,没有发现意外,但是上线被拒,根据苹果反馈的截图,说不准确,我卸掉 app并且关机重启,经过多次测试,与腾讯手机助手一对比,确实在特殊情况下会出现不一致的情况(我的出现错误),打比方:10:00开的机,将手机锁屏,等到10:08分时,在打开手机,发现我的开机时间变为了10:03分,而不是10:00开的机,最后收集相关资料发现,确实会出现这样的错误,是因为手机处于休眠状态时,不会计时,导致我拿到的开机时间->现在的时间间隔变小,再往前推算开机时间,就会发生错误.
// 不准确
NSProcessInfo * processInfo = [NSProcessInfo processInfo];
//Get the uptime of the system
NSTimeInterval UptimeInterval = [processInfo systemUptime];
NSLog(@"----%f",UptimeInterval);
NSDate *updateDate = [NSDate dateWithTimeIntervalSinceNow:-UptimeInterval];
NSString *updateDateString = [NSDate jk_stringWithDate:updateDate format:@"YYYY-MM-dd HH:mm:ss"];
// 计算开机时间
+(NSTimeInterval) bootTime{
struct timeval t;
size_t len=sizeof(struct timeval);
if(sysctlbyname("kern.boottime",&t,&len,0,0)!=0)
return 0.0;
return t.tv_sec+t.tv_usec/USEC_PER_SEC;
}
// 类型转化
+ (NSString *)timeIntervalToFormat:(NSTimeInterval)localTimeInterval{
time_t timeInterval = (time_t)localTimeInterval;
struct tm *time = localtime(&timeInterval);
NSString *timeStr = [NSString stringWithFormat:@"%d-%02d-%02d %02d:%02d:%02d",time->tm_year + 1900,time->tm_mon + 1,time->tm_mday,time->tm_hour,time->tm_min, time->tm_sec];
return timeStr;
}
``