ExtJS日历控件在夏令时时钟调整后时间显示异常问题咨询
ExtJS Calendar夏令时时间超前1小时问题原因分析

可能的原因如下:
- 时区配置不统一:控件默认读取浏览器本地时区渲染时间,如果后端存储的事件时间戳没有带明确的时区标识,或者前后端时区配置不一致,夏令时切换时会自动多计算1小时偏移量,导致渲染时间比表头快。
- 控件版本未修复夏令时兼容漏洞:ExtJS 6.x及更早版本的Calendar控件未对夏令时切换区间做特殊适配,计算时间轴刻度时直接套用全年固定的小时偏移规则,不会识别夏令时期间多出的1小时,最终出现整体偏移。
- 时间转换逻辑错误:前端渲染事件时没有做时区转换,直接把UTC时间戳当作本地时间计算,或者把夏令时区间的本地时间直接按标准时区偏移换算,都会导致时间错位。
- 时间轴配置硬编码错误:如果手动配置了时间轴的
minTime、maxTime、step等参数,没有关联对应时区的夏令时规则,夏令时切换后硬编码的参数不会自动适配,也会出现整体超前的问题。
临时修复参考
// 方案1:全局强制Calendar使用UTC时间渲染,避开本地夏令时影响 Ext.override(Ext.calendar.view.Base, { getTimezone: () => 'UTC' }); // 方案2:导入时区规则后指定业务对应的标准时区,自动适配夏令时 Ext.require('Ext.Date.Timezone', () => { // 提前导入对应时区的tz数据,包含夏令时切换规则 Ext.Date.Timezone.setData(yourTimezoneRuleData); Ext.override(Ext.calendar.view.Base, { getTimezone: () => 'Asia/Shanghai' // 替换为业务对应时区 }); });
内容的提问来源于stack exchange,提问作者Sap1234
相关产品推荐
相关产品推荐

