记安卓新系统的时间系统的问题

309 阅读2分钟

之前做了一个可以查看指定日期的干支的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年之前的时间都是有问题的。

最后,我改变了时间的基点,选择了国庆节作为基点进行日干的计算,纪念我们伟大的共和国。