为什么 iphone 时间调到 1970 年会变砖

为什么 iphone 时间调到 1970 年会变砖,第1张

iOS系统时间使用Unix时间戳(Unix epoch)表示(time_t数据类型)。在系统中,使用系统位数个二进制位储存时间。Unix时间戳规定,UTC时区的1970年1月1日 0点0时0秒的值为0,以秒为单位,即每过一秒,二进制数字加1。
以UTC时区的1970年1月1日 0点0时0秒为界限,数值为0,时间正常流逝为正数,反之为负数。由于时间受到时区的影响。假设一种情况,我原来是北京时区,假设将时间设置到了1970年1月1日 0点0时0秒,那么我将这个时间转换为UTC时间,公式:北京时间 = GMT + 8 = UTC + 8,那么UTC时间则为1969年12月31日 16时0分0秒。这样就会出现时间负值,即时间回归bug触发,系统启动卡在Kernel阶段,时间错误,无法继续进行启动。

二个方法。一,直接去苹果官方客服那里处理。二,有部分朋友说把手机充好电放在一边不管,过一段时间就会重新开机(时间没有确定长度)如果你等不起,还是推荐直接去找苹果官方客服处理吧!
最后一句话,好奇害死猫啊!

摘要:最近在网上沸腾的iOS时间bug闹的沸沸扬扬,据说是将iOS系统时间修改为1970/1/1,重启后系统将永远无法开机。那么这个事情是真的吗?如果是真的有什么合理的解释吗?想要真正了解这一bug,您可能需要以下知识。 UNIX时间戳 在确认这件事情

这是 iOS 系统背后的 UNIX 时间戳的整数下溢(Unix Epoch Integer Underflow)所导致的问题。
iOS系统时间使用Unix时间戳表示timestamp。在系统中,使用系统位数个二进制位储存时间。在32位系统中,time_t是长度为32位的,有符号整数(signed int)类型。首个二进制位是符号位,用来储存正负。正数则为1970/1/1以后的时间,负数反之;其余的31位用来记数。当时间到达2038年1月19日3时14分08秒时,数值位全部向前进1,导致符号位被置1,其余31位为0。介时,将出现“时间回归”的情况,系统时间变为1901年12月13日20时45分52秒,系统将会出现错误。
而在64位的系统中,基于UTC时区来说,北京时间的1970/1/1将变成1969年12月31日16时0分0秒。这样就会出现时间负值,即时间回归bug触发,系统启动卡在Kernel阶段,时间错误,无法继续进行启动
解决办法也非常简单,拆机并拆出电池,放置10分钟后重新安装。电量充足的情况下,等待数小时,当Unix时间戳的数值大于等于0,系统时间生效,可正常开机。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13287387.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-08
下一篇 2023-07-08

发表评论

登录后才能评论

评论列表(0条)

保存