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

如何在PrimeNG横向柱状图X轴显示27-feb-23格式日期?

PrimeNG横向柱状图X轴日期格式配置问题

我使用PrimeNG结合Angular开发横向柱状图,现有代码中X轴的日期未按指定格式(如27-feb-23)展示,推测需要在ticks中添加标签格式配置,但不确定具体实现方式,希望了解PrimeNG柱状图的日期显示配置方法。

当前图表效果:
当前横向柱状图X轴日期显示效果

现有组件代码:

export class BarGraphComponent {
  basicData: any;

  basicOptions: any;

  chartOptions: any;

  horizontalOptions: any;

  constructor() {}

  ngOnInit() {
      this.basicData = {
          labels: ['Set Pre-Cast Girders-San Antonio OC-Stage 1 - Milestone', 'Pour Footing-6th OC-Bent 2-Stage 1 - Milestone', 'Setup MOT-Monte Vista UC-Stage 2B - Milestone', 'Open Campus Bridge For Traffic - Milestone', '  Place JPCP-Benson To Mountain (Sta 1093-1125)-Stage 2A WB (GP#3 & 4 & SH) - Milestone', 'Excavate Bench 5th-RW 1155 (SHGA) - Milestone', 'Form Superstructure Face-RW 1154 (Soldier Pile & GA) - Milestone'],
          datasets: [
              {
                  label: 'My First dataset',
                  backgroundColor: '#42A5F5',
                  data: [ new Date('2023, 2, 27'), new Date('2023, 2, 27'), new Date('2023, 3, 1'), new Date('2023, 3, 6'), new Date('2023, 3, 26'), new Date('2023, 4, 11'), new Date('2023, 4, 26')]
              }
          ]
      };

      this.horizontalOptions = {
          indexAxis: 'y',
          plugins: {
              legend: {
                  labels: {
                      color: '#495057'
                  }
              }
          },
          scales: {
              x: {
                  ticks: {
                      color: '#495057'
                  },
                  grid: {
                      color: '#ebedef'
                  }
              },
              y: {
                  ticks: {
                      color: '#495057'
                  },
                  grid: {
                      color: '#ebedef'
                  }
              }
          }
      };
  }
}

解决方案

PrimeNG柱状图基于Chart.js实现,直接用Chart.js的时间轴配置即可实现自定义日期格式。需两步修改:指定X轴为时间类型,配置日期格式化规则。

修改后的horizontalOptions配置代码如下:

this.horizontalOptions = {
    indexAxis: 'y',
    plugins: {
        legend: {
            labels: {
                color: '#495057'
            }
        }
    },
    scales: {
        x: {
            type: 'time', // 声明X轴为时间轴类型
            time: {
                unit: 'day', // 按日维度展示数据
                displayFormats: {
                    day: 'dd-MMM-yy' // 设置日期格式,对应目标格式27-feb-23
                }
            },
            ticks: {
                color: '#495057',
                // 手动格式化回调,确保格式完全匹配需求
                callback: function(value: any) {
                    const date = new Date(value);
                    const day = date.getDate().toString().padStart(2, '0');
                    const monthNames = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
                    const month = monthNames[date.getMonth()];
                    const year = date.getFullYear().toString().slice(-2);
                    return `${day}-${month}-${year}`;
                }
            },
            grid: {
                color: '#ebedef'
            }
        },
        y: {
            ticks: {
                color: '#495057'
            },
            grid: {
                color: '#ebedef'
            }
        }
    }
};

关键说明:

  • type: 'time':让Chart.js识别X轴数据为日期类型,是格式化的前提。
  • time.displayFormats:通过预定义格式字符串快速设置日期样式,dd是两位日期,MMM是三位小写月份缩写,yy是两位年份。
  • ticks.callback:手动格式化的兜底方案,避免某些场景下自动格式化失效,确保输出完全符合27-feb-23的格式。

注意事项:

如果项目未安装Chart.js时间适配器,需额外安装依赖并导入,否则时间轴可能无法正常工作:

npm install chartjs-adapter-date-fns date-fns

在Angular模块中导入适配器:

import 'chartjs-adapter-date-fns';

内容的提问来源于stack exchange,提问作者Anamika Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:10:24