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

如何在React ApexCharts中使用波斯日期创建Datetime X轴brushChart

崩溃问题修复

你程序崩溃的核心原因是defaultLocale取值和自定义locale的name字段不匹配:配置中自定义locale的name为per,但defaultLocale填写的是Fa,ApexCharts找不到对应语言配置就会触发报错。

将两个字段取值统一即可解决崩溃问题,修正后的基础配置如下:

chart: {
  id: 'reactchart-example',
  defaultLocale: 'fa', // 和自定义locale的name保持完全一致
  locales: [
    {
      name: 'fa', // 统一命名为fa,和defaultLocale匹配
      options: {
        months: [
          'دی',
          'بهمن',
          'اسفند',
          'فروردین',
          'اردیبهشت',
          'خرداد',
          'تیر',
          'مرداد',
          'شهریور',
          'مهر',
          'آبان',
          'آذر',
        ],
        shortMonths: ['دی', 'بهم', 'اسف', 'فرو', 'ارد', 'خرد', 'تیر', 'مرد', 'شهر', 'مهر', 'آبا', 'آذر'],
        days: ['یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنج شنبه', 'جمعه', 'شنبه'],
        shortDays: ['یک', 'دو', 'سه', 'چهار', 'پنج', 'جمع', 'شنب'],
        toolbar: {
          download: 'دانلود SVG',
          selection: 'انتخاب',
          selectionZoom: 'انتخاب بزرگنمایی',
          zoomIn: 'بزرگنمایی',
          zoomOut: 'کوچک نمایی',
          pan: 'جابجایی',
          reset: 'بازگرداندن',
        },
      },
    },
  ],
},
波斯日期格式适配

仅修改语言配置只能替换内置的月份、星期文本,不会自动将公历日期转换为波斯历,需要额外做以下配置:

  • 安装jalaali-js库完成公历与波斯历的日期转换
  • 在X轴配置中自定义日期格式化函数,将传入的时间戳转换为波斯日期格式

X轴配置示例:

import jalaali from 'jalaali-js'

xaxis: {
  type: 'datetime',
  labels: {
    formatter: (timestamp) => {
      const date = new Date(timestamp)
      // 公历转波斯历
      const persianDate = jalaali.toJalaali(date.getFullYear(), date.getMonth() + 1, date.getDate())
      // 自定义返回格式,示例为 年/月/日
      return `${persianDate.jy}/${String(persianDate.jm).padStart(2, '0')}/${String(persianDate.jd).padStart(2, '0')}`
    }
  }
}
带Datetime X轴的BrushChart实现

BrushChart需要拆分两个ApexCharts组件,分别作为主展示图表和滑动选择的brush图表,核心配置逻辑如下:

  • 两个图表共用同一份时间数据源,确保时间范围对齐
  • brush图表的chart.brush.target字段填写主图表的id,实现两个图表的联动
  • 两个图表的X轴都配置相同的波斯日期格式化逻辑,避免显示不一致

brush图表的核心配置示例:

chart: {
  id: 'brush-chart',
  brush: {
    enabled: true,
    target: 'reactchart-example' // 和主图表的id保持一致
  },
  selection: {
    enabled: true,
    xaxis: {
      min: 初始选择范围的最小时间戳,
      max: 初始选择范围的最大时间戳
    }
  }
}

内容的提问来源于stack exchange,提问作者kosar mohammadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:36:04