解决iOS联系人农历生日bug的一个例子
在iOS联系人app中为亲朋好友添加农历生日,在日历app中实现联动提醒,非常方便。但不幸的是,这个功能出现了一些bug。
近日发现一例 bug 似乎与系统中的时间选择器相关联,下面介绍这个 bug 和我发现的解法。
Bug 描述:无法添加某些特定日期的农历生日
如图所示,当我尝试为联系人添加农历生日「己未年六月初一(即 1979 年 6 月 24 日)」时,第一个问题就出现了:时间选择器不允许选择具体的年份。众所周知,干支纪年法每 60 年为一循环周期(即「甲子」),虽然我选中了「己未年」,但是这是哪一个「己未年」呢?也许是 1979 年,也许是 1919 年、1859 年、1799 年……who knows?
点击右上角的「完成」之后,更离谱的事情出现了——日期变成了「-2038 年壬戌年冬月初一」,年份、干支、月份都莫名其妙出错了,唯独「初一」还是正确的。
其实从上一张图里也能看出来……
另外,这里的时间选择器还有种种奇怪的交互反馈,无法尽数列举。例如尝试将月份设置为「不可选的月份(灰色字体)」时,会导致干支选项被重置为「辛酉(-2579 年)」。
综上,按正常操作逻辑基本不可能完成「给联系人设置农历生日」这一任务。此问题在我的 iPhone SE 第三代和 iPad Pro 上均能成功复现,不知道在其他设备上情况如何(请在评论区反馈您的机型和 bug 情况)。
解决方法:先添加公历生日,再改为农历生日
尽管令人恼火,但此问题其实有一个很简单的临时解法, 那就是「先添加公历生日,再改为农历生日」。
例如,先用万年历查找到农历 1979(己未)年六月初一对应的公历日期,即 1979 年 6 月 24 日,将联系人的生日设置为该公历日期。在这一步你可能遇到的问题是,年份一栏被设置为了公历 1 年,需要多向下划几下才能看到我们比较熟悉的 19xx 年份。
注意,此时的生日类型应该是默认的「生日」
然后再将生日类型改为「农历生日」。这样做不需要用到时间选择器,系统会自动将公历日期换算成农历日期。点击「完成」,搞定。
将生日类型改为「农历生日」,日期会自动换算,不需要理会时间选择器
结语
我上一次集中给通讯录里的亲朋好友添加农历生日是大概五年前的事情。那时候没遇到过上述的 bug,我操作了几十个不同的农历生日日期都没有任何问题。有理由相信应该是代码传承的过程中,某个程序员的失误操作,搞乱了整个农历相关的时间选择器逻辑。
即使是多年的 Apple 用户,也不得不面对 Apple 软件质量滑坡的事实。其实这个问题在官方社区里几个月来陆续有人反馈,但是都没有得到官方回应,这一点必须差评。在一些软件设计的细节上 Apple 也越来越欠考究,甚至到了不需要交互设计专业技能也能看出来的地步。比如为什么日历 App 的时间选择器支持键盘 / 滚轮混合输入,联系人生日这里却不支持?iOS 优秀的细节设计曾经起到了「聚沙成塔」的效果,如今却有了些许「溃于蚁穴」的迹象。
在官方社区,陆续有民众反馈,一直没有官方回应。
己未年是公历哪一年
六十一甲子,九转一轮回。那己未年是公历哪一年呢?
己未年是公历哪一年。以天干地支纪年法,己未为其一者,其位于五六,前位为戊午,后位为庚申,五行纳音为“天上火”。
己未,偏库之火,五行要论云:己未衰火,含余藏宝之气,春夏之月,运入沉潜之乡,则明达峻敏,福庆深远,夏得之,非和气也,秋得之则先吉后凶。纳音火,禄逢小吉之乡,干支土旺,天地神会。火得木库,功成名就。贵地逢巳午,未为小吉之贵。生于寅丑之乡,乃火之冠生之地,得以资附,能享其福之厚也。若己得官甲扶持,是以得官为福,不可再旺。
以干支纪年法者,六十为一甲子循环者,己未其一近者为1979者。六十年为一循环,自当年立春起至次年立春前止之岁次内均为“己未年”。
其它相关:
公历是哪一年?
六十一甲子,九转一循环。公历是哪一年?
己未年是公历哪一年。以天干地支纪年法,己未为其一者,其位于五六,前位为戊午,后位为庚申,五行纳音为“天上火”。
己未,偏库之火,五行要论云:己未衰火,含余藏宝之气,春夏之月,运入沉潜之乡,则明达峻敏,福庆深远,夏得之,非和气也,秋得之则先吉后凶。纳音火,禄逢小吉之乡,干支土旺,天地神会。火得木库,功成名就。贵地逢巳午,未为小吉之贵。生于寅丑之乡,乃火之冠生之地,得以资附,能享其福之厚也。若己得官甲扶持,是以得官为福,不可再旺。
按干支年表,60是甲子的一个周期,与之不近的是1979年。六十年为一个周期,从当年立春到次年立春的岁月都是【岁月流逝】。