You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Highcharts Gantt xAxis.breaks异常:多余日期被隐藏问题求助

Highcharts甘特图隐藏非工作日异常问题解决

问题原因

你遇到的隐藏日期过多的问题,核心源于两点:

  • 时区不匹配:第一段代码用setUTCHours设置UTC时间零点,若图表使用本地时区,会导致时间范围偏移(比如东8区UTC零点对应本地8点,breaks会错误覆盖前一天的8点到当天8点),额外隐藏日期。
  • 时间范围无效:第二段代码将from和to设为同一时间戳,相当于没有覆盖完整的一天,Highcharts会对过小的breaks范围做异常处理,导致相邻日期被错误隐藏。

正确实现方式

根据你的图表时区选择对应代码:

情况1:图表使用本地时区(默认)

breaks: diasFestivos.map(function(fecha) {
  // 基于本地时间创建当天的起止时间
  const targetDate = new Date(fecha);
  const dayStart = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate());
  const dayEnd = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate(), 23, 59, 59, 999);
  
  return {
    from: dayStart.getTime(),
    to: dayEnd.getTime(),
    breakSize: 0
  };
})

情况2:图表使用UTC时区(设置了useUTC: true)

breaks: diasFestivos.map(function(fecha) {
  // 基于UTC时间创建当天的起止时间
  const targetDate = new Date(fecha);
  const dayStart = Date.UTC(targetDate.getUTCFullYear(), targetDate.getUTCMonth(), targetDate.getUTCDate());
  const dayEnd = Date.UTC(targetDate.getUTCFullYear(), targetDate.getUTCMonth(), targetDate.getUTCDate(), 23, 59, 59, 999);
  
  return {
    from: dayStart,
    to: dayEnd,
    breakSize: 0
  };
})

额外检查项

  • 确认diasFestivos数组中的日期格式能被new Date()正确解析,避免无效日期生成错误的breaks。
  • 确保数组仅包含需要隐藏的周日和节假日,无重复或错误日期。

内容的提问来源于stack exchange,提问作者carlos maya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:05:11