为何iOS 6勿扰模式会出现新年bug,可能是这样…

2013-1-6 0:16:26 | tags | views

2013年新年伊始,苹果iOS 6中搭载的“勿扰模式”就被曝光出现失效的bug,后来苹果很快做出官方回应,称该问题将在1月7日自动修复,建议用户这几天关闭该功能。那么iPhone中为何会出现此问题呢,而为何7号又会自行修复呢?实际上这很可能是一种时间计算方式出现了问题,原因可能在于苹果采用了ISO制式时间标准,却没有考虑到跨年对应的问题导致时间对应错乱。

 

dnd-1-1-13-rmg.jpg

国外TUAW网站首先刊出类似推测,但其中有严重ISO时间概念错误已经被指出;本文是在其基础上进行的重新整理和推测.

ISO标准(制造业常使用该标准,也称作商业历)是这样按照周数来显示计算每年的日期的:YYYY-Www-D

举例说明:2012年第50周的星期二按照ISO标准以描述为:2012-W50-2

公历日期(Gregorian calendar)则是按照这样的方式来显示计算日期的:YYYY-MM-DD

举例说明:2012年12月11日公历日期的描述:2012-12-11

其实iOS日期的2012-W50-2  刚好对应 公历的2012-12-11

而是ISO标准下,如何判定新年另有规定:自动判定新年包含第一个周四的那周为第一周,也就是说:

2012年12月30日:2012-W52-7

2012年12月31日:2013-W01-1

2013年1月1日:2013-W01-2

2013年1月2日:2013-W01-3

2013年1月3日:2013-W01-4(周四)

2013年1月4日:2013-W01-5

2013年1月5日:2013-W01-6

2013年1月6日:2013-W01-7

2013年1月7日:2013-W02-1

这里就是苹果iOS 6“勿扰模式”出现bug最可能存在的问题,苹果设定这个功能的时候,很可能使用了ISO时间制式采用周循环,但是却没考虑到跨年变动的问题,设定的时候,误将2013年的第一个周循环设定为从1月7日开始,而2013新年前六天(可能)被判定为2012年的第53周(ISO制式的确在某些年份会出现第 53周),但事实上根本就不存在这些时间,所以勿扰模式并没有自动关闭。

在现有iOS 6系统尚未进行任何软件更新的情况下,大家可以进行这样一个测试来巩固上面的说法:把时间调整到2014年、2015年、2016年……只要新年的第一天是周五、周六、周日,就不会出现问题(前提是要提前一天设定勿扰模式,不可当天设定,当天设定会变成周日也不行)。

对于苹果的做法来说,没有在这几天发布一个软件更新补丁,而是让用户等待这端错乱时间结束,可能是出于多方面考虑,但毫无疑问的是,此次的bug绝对是苹果在制定“勿扰模式”功能的时候,在跨年日期计算上出了差错,并非意外。

而苹果也会在未来的软件更新中修复这一问题,所以大家根本不必担心2014年的时候会出现该问题(要是谁不升级系统就当我没说…)

 

    相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。