今天开发系统针对与境外出现时区问题,北京时区时间的数据,在纽约时区出现日期减一的情况,导致业务对系统有疑惑。虽然是用户自己电脑的时区导致数据偏差,但是对于系统来说是个硬伤。
我使用的前端框架为ng-zorro的日期选择框组件。
解决方法:
1、展示处理:
标签展示很简单,可以使用angular的数据管道进行处理。
例如:
let currentdate
<td>{{currentdate | date:'YYYY-MM-DD':'GMT:+8:00'}}</td>
这样处理后展示就可以啦。
2、双向绑定的数据处理
这种情况使用这种管道的方式就比较麻烦。
在ng-zorro的git里面查到了大佬的讲解,我的理解是,使用YYYY-MM-DD格式绑定到日期选择器组件中他会根据时区进行减一天或者新增一天。
如果格式化为YYYY,MM,DD的方式,它就不会通过时区自动转化
示例:
let maxTime = res;
this.searchCond.date = new Date(maxTime.replaceAll('-',','))
将此变量绑定在日期选择器中将不会根据时区进行处理。
排查了一天,终于解决了,当做经验吧。