近日业界爆出苹果设备的一个bug,如果将一台搭载64位处理器的iphone、ipad的系统日期修改为1970年1月1日,将导致此设备无法正常启动(设备启动时,卡在苹果Logo,无法继续启动)。需要送到苹果商店修理,修理方法很简单,只需切断电池然后重新连上。这个bug影响运行iOS 8或iOS 9,配备64位处理器的iPhone、iPa和iPod Touch设备。本文将分析下引起这个bug的原因及解决办法:

日期设为1970年1月1日导致64位iOS设备无法启动的原因:
苹果iOS系统时间使用Unix时间戳(Unix epoch)表示(time_t数据类型)。在系统中,使用系统位数个二进制位储存时间。Unix时间戳规定,UTC时区的1970年1月1日0点0时0秒的值为0,以秒为单位,即每过一秒,二进制数字加1。不过各位需要留意的是,时间受到时区的影响。假设一种情况,我原来是北京时区,假设将时间设置到了1970年1月1日0点0时0秒,那么我将这个时间转换为UTC时间,公式:北京时间= GMT+8 = UTC+8,那么UTC时间则为1969年12月31日16时0分0秒。这样就会出现时间负值,导致iOS系统启动卡在Kernel阶段,时间错误,无法继续进行启动。
日期设为1970年1月1日导致64位iOS设备无法启动问题的解决方案:
方案一:送到苹果商店修理,由专业人员拆机并拆出电池,放置10分钟后重新安装。
方案二:在iphone、ipad电量充足的情况下,等待数小时(如你手机设置的为东8区,那就等待8个小时以上),当Unix时间戳的数值大于等于0,系统时间生效,可正常开机。(此方法未经官方确认)
更新:
苹果官方已经确认存在以上Bug且承诺会在下一个iOS版本上解决该问题。