打印本文 关闭窗口 |
分析为何苹果iOS6勿扰模式会出现新年bug
|
作者:陈淏轩 文章来源:iPhone中文网 点击数 更新时间:2016-2-1 11:22:55 文章录入:贯通日本语 责任编辑:贯通日本语 |
|
2013年新年伊始,苹果iOS 6中搭载的“勿扰模式”就被曝光出现失效的bug,后来苹果很快做出官方回应,称该问题将在1月7日自动修复,建议用户这几天关闭该功能。那么iPhone中为何会出现此问题呢,而为何7号又会自行修复呢?实际上这很可能是一种时间计算方式出现了问题,原因可能在于苹果采用了ISO制式时间标准,却没有考虑到跨年对应的问题导致时间对应错乱。 国外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年的时候会出现该问题(要是谁不升级系统就当我没说…)
|
打印本文 关闭窗口 |