ios 客户端校准标准时间

iOS 由于iOS客户端开发无法正确校准标准时间,而标准时间可以通过服务器得到,那么怎么样时时的得到服务器所给我的正确时间呢?

由于项目有通过时间去发公告的功能,

 [[NSProcessInfoprocessInfo]systemUptime];

上面代码返回一个时间戳可以得到系统开机时间到现在为止的秒数,我会在程序刚启动时就得到这个时间戳同时也会得到服务器下发给我的服务器时间

-(void)setOriginTime:(NSTimeInterval)servertime {

    _originServerTime = servertime;

    _originStartTime = [[NSProcessInfoprocessInfo]systemUptime];

//    NSLog(@"_________originTime   %f, %f",_originServerTime, _originStartTime);

}清楚的一点是每次调用这个方法 [[NSProcessInfo processInfosystemUptime];会重新得到一个时间差,每次掉用此方法并且减去刚登录成功时得到的时间差也就是服务器下发给你的时间到目前为止执行了多长时间,此时服务器加上这个时间差就是当前的时间,我最初的误解是使用一个打点计时器去不断的更新和维护,看来是不需要的,苹果给我们的类库很丰富

// 返回当前的服务器时间

-(NSDate *)serverDate{

    if (_originStartTime ==0return [NSDatedate];

    NSTimeInterval outtime = [[NSProcessInfoprocessInfo]systemUptime] -_originStartTime;

    NSDate *serverDate = [NSDatedateWithTimeIntervalSince1970:(_originServerTime + outtime)];

//    NSLog(@"srever_ %@",serverDate);

    return serverDate;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值