前言
最近自己写了一个项目,涉及到统计这个业务,前端用Echarts显示。发现,这其中竟然有bug,主要是因为mongoDB用的是UTC时间,所以产生了数据不一致的问题。
正文
我是按照日期来统计的,原来,mongoDB里面的日期是ISO日期格式,和北京时间相差8小时。主要是在内部查询的,我们无法控制,或者控制起来的成本太大了。比如我是2023-5-1添加的,mongodb数据库里面存的就是2023-4-30日这个日期。用dayjs这个库在页面上还是可以正常的显示的。但是查询的是4-1日到4-30日这个日期的数据,我明明是5月1日的数据,被算到了4月30日的数据了。我真的无语。
解决
方法一:每次储存之前将北京时间转为UTC时间多写很多无用代码。这样你查询的时候就会用UTC时间来查询,不是按照我们的时间,这样会产生很多的误解。如果是全部用北京时间,后端也要写很多代码,增加的时候+8小时,查询的时候减去8小时。才和我们是一样的。返回的结果是差不多的,但是在时间上是有差异的。
方法二:在查询的时候,把UTC时间加上8小时,就可以解决这个问题。