之前做了一个可以查看指定日期的干支的APP,今晚突然有人发现日干对应不上日期了。(2021年3月26日是癸酉日,但是软件显示的却是甲戌日(明天的干支))
我一开始以为是算法的问题,结果测试一下,算法没问题。
然后我以为是时区问题,就把时间都设置为东八区。结果还是不行。
我就纳闷了,去年发给别人的时候,为什么没有BUG。
只能祭出日子打印算法了。
结果让我很震惊,下面是我打印的log:
I/System.out: 干支 --> 余数大于0算一天 ?3823113943000 343000.0
I/System.out: 干支1616767284000 -2206346659000
I/System.out: 干支2021-03-26 22:01:24 1900-01-31 22:01:24
I/System.out: 干支1616767284000 -2206346659000
I/System.out: 干支2021-03-26 22:01:24 1900-01-31 22:01:24
image.png
后面那个日期 和时间戳明显对不上。
然后我调用了getTimezoneOffset()发现,后面的居然是485,前面的是480。好家伙,足足差了5分钟。我以为谷歌这是在针对我大清,把1912年的时间都搞了。经过一番测试,1901年1月1日,时差开始变成了480。看来是1901年之前的时间都是有问题的。
最后,我改变了时间的基点,选择了国庆节作为基点进行日干的计算,纪念我们伟大的共和国。
网友评论