在開發(fā)的過程中粘勒,我們經(jīng)常會(huì)使用的系統(tǒng)時(shí)間,但是手機(jī)的系統(tǒng)時(shí)間用戶可以自行改變击费,在這個(gè)基礎(chǔ)上獲取到的時(shí)間就不準(zhǔn)確了俏让。
那么這個(gè)時(shí)候我們可以通過獲取服務(wù)器的時(shí)間來校準(zhǔn)本地時(shí)間。
在應(yīng)用啟動(dòng)的時(shí)候獲取服務(wù)器當(dāng)前的時(shí)間+在加上該時(shí)間段內(nèi)應(yīng)用的運(yùn)行時(shí)間鳍徽。
獲取服務(wù)器的時(shí)間保存资锰,并記錄該進(jìn)程當(dāng)前的運(yùn)行時(shí)間
-(void)setOriginTime:(NSTimeInterval)servertime {
??? _originServerTime = servertime;
???
??? NSDate *serverDate = [NSDate dateWithTimeIntervalSince1970:(_originServerTime)/1000];
??? NSLog(@"srever_ %@",serverDate);
??? _originStartTime = [[NSProcessInfo processInfo]systemUptime] * 1000;
??? NSLog(@"_________originTime?? %f, %f",_originServerTime, _originStartTime);
}
每次需要用到的時(shí)間的時(shí)候:
用之前獲取到的服務(wù)器時(shí)間+當(dāng)前進(jìn)程的運(yùn)行時(shí)間
-(long long)serverDate{
? ? NSTimeInterval outtime = [[NSProcessInfo processInfo]systemUptime] * 1000 -_originStartTime;
? ? NSDate *serverDate = [NSDate dateWithTimeIntervalSince1970:(_originServerTime + outtime)/1000];
? ? NSLog(@"srever_ %@",serverDate);
? ? long long time = [serverDate timeIntervalSince1970] * 1000;
? ? NSLog(@"srever_time %lld",time);
? ? return time;
}