ios 时间

GMT时间:

根据太阳的位置来计算时间,但是地球的自转时间越来越慢,所以这个时间现在不是特别准确。

UTL时间:

根据微观粒子原子的物理属性,原子钟10亿年才会误差1秒。所以现在我们使用的是UTC时间。

UTC时间简介:

NSDate描述的时间线上的一个绝对的值,以UTC为标准,2001年1月1日00:00:00这一刻的时间绝对值。

CFAbsoluteTimeGetCurrent()以GMT为标准的,2001年一月一日00:00:00这一刻的时间绝对值。

gettimeofday

使用gettimeofday获得的值是Unix time。
Unix time是以UTC 1970年1月1号00:00:00为基准时间。
服务器一般都是以这个时间为基准。

sysctl
iOS系统还记录了上次设备重启的时间。可以通过如下API调用获取:

mach_absolute_time(),CPU的时钟周期数(ticks)。这个函数返回的值是cpu已经运行的tick的数量。
这个ticks,在每次重启之后,会重新开始计数,而且iphone锁屏进入休眠之后tick也会暂停计数。
mach_absolute_time()不会受系统时间影响,只受设备重启和休眠行为影响。

CACurrentMediaTime()

简介:就是将mach_absolute_time()的时间转换成秒数的结果。

UI线程如果遇到16.7ms的阻塞,就会出现掉帧现象,所以我们关注的时间的精度实际上是毫秒(ms)级别。如果一个方法损耗0.1ms,我们可以认为这个方法是安全的,如果经常看到超过1ms或者几个ms的方法,主线程卡顿的几率就会升高。

时间同步的技巧:

程序首次进入获取服务器时间,然后记录下当前的本地时间,再用

你可能感兴趣的:(ios 时间)