北美微论坛

App下载
扫码下载 App
联系我们
1框架
查看: 949|回复: 17
打印 上一主题 下一主题

[心情闲聊] iPhone的1970年bug,大概是因为这吧。

[复制链接]

副教授

Rank: 9Rank: 9Rank: 9

最佳新人

跳转到指定楼层
楼主
发表于 2016-2-16 16:26:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1970年1月1日,是一个十分重要的日子。因为,这是UNIX时间的基准。

简单说下什么是UNIX时间。搞编程的朋友们肯定知道。1970年1月1日的0点到某时刻的总秒数,就是UNIX时间。要注意的是,这个0点,是以UTC 0规定的。打下这句话的瞬间,是美国中部时间下午4点45,用UNIX时间表示就是1455662701。也就是说,从1970年1月1日的0点开始,到现在,总共经过了这么多秒。

再说说时区,目前时区换算都靠UTC(Coordinated Universal Time)。美国本土是UTC-5~-8(不考虑海外领土、夏威夷、阿拉斯加、关岛、波多黎各、萨摩亚、北马里亚纳群岛)。中国的时区是UTC+8。

那么UNIX这个bug是怎么回事儿?为了叙述方便,咱们后面全用美东标准时间(UTC-5)来说。标准时间意思就是不考虑夏令时什么的问题。

如果我们把手机时区调成美国,然后调成1970年1月1日0点(UTC-5),那么对应的UTC 0是1970年1月1日5点。得到的时间戳应该是0000018000。然而,如果在国内,调成1970年1月1日0点(UTC+8),那么对应的UTC 0是1969年12月31日下午4点。这个时间早于UNIX时间的基准。由于UNIX时间戳(time stamp)不允许负数,所以会导致系统无法启动(只是一个猜测,但多半应该是因为这个吧。讲道理的话这种情况是可以避免的)。


当然,这不保证在美国的小伙伴们可以随便试。为什么苹果官网会说不要调到5月之前呢?说好的1月1日呢?因为日历也有不同的历法。咱们每天用的叫Gregorion,iPhone支持的还有Japanese,和Buddhist。另外还有Hebrew,Chinese(就是农历,Lunar Calendar)。我是没想出来为什么会说5月,因为这并不是一个什么时间点(唯一能想到的就是我五月过生日=。=),只是感觉和这个应该有关。所以Apple这么说,应该是为了防止你一不小心把日期退回到了1970年1月1日之前。

简而言之,只要你保证不把UNIX时间戳退回到0000000000之前,也就是UTC 0 的1970年1月1日0点之前,就不会出问题。

然而,我们为什么要尝试?=。=

P.S. 有兴趣的朋友们还可以去看看2038问题,是32位系统到2038年的1月某天(具体时间不记得了)会把UNIX时间归零。解决方法?换64位系统呗!只是,谁能保证自己现在的电脑用到2038年?。。。

道理大概就是这样,或者说很可能是这样。再次劝大家一句,别试了。理论上重启是没用的。。因为进不去系统。DFU也解决不了。倒是有一种能解决的方式,只是很麻烦,真的不值当的。为了防止大家尝试,就不在这儿说了。
收藏收藏1 分享分享 赞赞赞!赞赞赞! 踩踩踩!踩踩踩! 新浪微博微博分享
回复

使用道具 举报

禁止发言

鸡腿爱好者

最佳新人常驻居民论坛元老申诉壮士

沙发
发表于 2016-2-16 16:28:39 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
代查chegg答案 一题10金币,站内或者微信huichun1994
回复

使用道具 举报

院士

丢月城大祭司

Rank: 14Rank: 14Rank: 14Rank: 14

最佳新人常驻居民

板凳
发表于 2016-2-16 16:35:12 | 只看该作者
我就想这样能不能免费换机子,哈哈

为师不放心,折回来补一刀
回复

使用道具 举报

副教授

Rank: 9Rank: 9Rank: 9

最佳新人

地板
 楼主| 发表于 2016-2-16 17:04:11 | 只看该作者
usnma 发表于 2016-2-16 18:35
我就想这样能不能免费换机子,哈哈

估计也不会给你换机子的,哈。
因为就算设置到那个时间,也有办法可以解决。应该要拔电池,等几个小时,然后到了UTC 0点就可以了。
不过如果去Apple店,他们应该有办法直接改参数,不用等
回复

使用道具 举报

副教授

Rank: 9Rank: 9Rank: 9

最佳新人

5#
 楼主| 发表于 2016-2-16 17:04:48 | 只看该作者

说的还不够明白,,还是太长了
回复

使用道具 举报

助理教授

Rank: 8Rank: 8

最佳新人常驻居民

6#
发表于 2016-2-16 17:12:52 来自手机 | 只看该作者
usnma 发表于 2016-2-16 16:35
我就想这样能不能免费换机子,哈哈

之前有人换了,但是是保修期内。现在好像有解决办法了。
来自: iPhone客户端
回复

使用道具 举报

助理教授

強烈熱愛自由的女漢子

Rank: 8Rank: 8

最佳新人精华达人美食达人圣诞限量

7#
发表于 2016-2-16 19:57:39 来自手机 | 只看该作者
干嘛要用自己的机子试呢,苹果店不是大把吗
来自: iPhone客户端
回复

使用道具 举报

副系主任

Rank: 11Rank: 11Rank: 11Rank: 11

8#
发表于 2016-2-16 20:01:23 | 只看该作者
牛!
回复

使用道具 举报

副校长

Rank: 16Rank: 16Rank: 16Rank: 16

最佳新人常驻居民

9#
发表于 2016-2-16 20:06:35 | 只看该作者
不明觉厉
回复

使用道具 举报

副教授

Rank: 9Rank: 9Rank: 9

最佳新人常驻居民

10#
发表于 2016-2-16 20:24:18 | 只看该作者
你这样说了  会有更多人想换机
回复

使用道具 举报

副教授

Rank: 9Rank: 9Rank: 9

最佳新人

11#
 楼主| 发表于 2016-2-17 18:05:05 | 只看该作者
肥肉都是会动的 发表于 2016-2-16 22:24
你这样说了  会有更多人想换机

本意是不想让更多人试
回复

使用道具 举报

副教授

Rank: 9Rank: 9Rank: 9

12#
发表于 2016-2-17 19:21:29 来自手机 | 只看该作者
回复

使用道具 举报

副教授

疯子 傻子 骗子

Rank: 9Rank: 9Rank: 9

13#
发表于 2016-2-17 20:16:38 | 只看该作者
翻译成人话就是。。
你让程序想。。我被编出来之前的事情。。

这他当然就挂了

点评

+1: 5.0
+1: 5
  发表于 2016-2-18 08:15
回复

使用道具 举报

副教授

疯子 傻子 骗子

Rank: 9Rank: 9Rank: 9

14#
发表于 2016-2-17 20:23:32 | 只看该作者
我记得。。这么玩儿。。是会玩儿死的。。还无解好像。。。。。。好像。。大概。。没注意  


不到其实我倒是觉得。。
这个不像是时间的问题。。(想了想。。国内按照时区。。刚好是0吧。。。。
倾向于。。某软件。。处理这些上古日期时把自己卡炸了 然后springboard 不断崩溃。。
回复

使用道具 举报

副教授

Rank: 9Rank: 9Rank: 9

最佳新人

15#
 楼主| 发表于 2016-2-18 08:20:23 | 只看该作者
我就看看不说话 发表于 2016-2-17 22:23
我记得。。这么玩儿。。是会玩儿死的。。还无解好像。。。。。。好像。。大概。。没注意  

是按照UTC 0为标准的。不管你选什么时区,UNIX时间都按照UTC 0为标准时。国内按照UTC 0+8,美东按照UTC 0-5。标准时和设置的区域无关,和所在地也无关。UTC 0就相当于以前的GMT。只是现在不常用GMT了。

也不无解,只是要拆机。

这个漏洞,是可能被黑客利用的。建立无线网络,然后可以设置服务器时间为更早,如果连上这个网络的手机开了与服务器同步时间,那么就全崩了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部