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

AG-Grid导出Excel时带毫秒的ISO日期格式失效问题

AG-Grid导出日期毫秒格式异常问题解决

问题描述

使用AG-Grid导出带毫秒的ISO格式日期时,配置numberFormat.format为yyyy-mm-ddThh:mm:ss.sssZ,导出后毫秒位显示的是秒的数值。例如预期输出2009-04-20T01:02:03.03Z,实际得到2009-04-20T01:02:03.457Z。尝试过以下格式均无效:

  • format: 'yyyy-mm-ddThh:mm:ss.sssZ'
  • format: 'yyyy-mm-ddThh:mm:ss.SSSZ'
  • format: 'yyyy-mm-ddThh:mm:ss:sssZ'
  • format: 'yyyy-mm-ddThh:mm:ss:SSSZ'

问题原因

  1. 错误使用格式化类型:用numberFormat处理日期字段,会将日期转为时间戳数值后再格式化,导致毫秒位被错误解析为数值的部分。
  2. 格式符大小写错误:AG-Grid的日期格式化遵循特定规则,比如mm代表分钟(而非月份),小写sss不是有效的毫秒格式标识。

解决方案

方案1:使用dateFormat配置日期列

针对日期类型字段,应使用dateFormat而非numberFormat,并使用正确的格式符:

{
  headerName: '日期',
  field: 'date',
  type: 'date',
  dateFormat: 'yyyy-MM-ddTHH:mm:ss.SSSZ'
}

格式符说明:

  • yyyy:4位年份
  • MM:2位月份(大写,避免与分钟mm混淆)
  • dd:2位日期
  • HH:24小时制小时(ISO格式推荐使用)
  • mm:分钟
  • ss:秒
  • SSS:三位毫秒(大写,AG-Grid识别的毫秒格式符)
  • Z:UTC时区标识(符合ISO格式要求)

方案2:自定义valueFormatter直接输出ISO格式

如果配置dateFormat仍有问题,可通过valueFormatter手动处理日期输出:

{
  headerName: '日期',
  field: 'date',
  valueFormatter: params => {
    const date = new Date(params.value);
    // toISOString()直接输出标准ISO 8601格式,含毫秒和UTC时区
    return date.toISOString();
  }
}

此方法会输出符合标准的格式,例如2009-04-20T01:02:03.030Z(毫秒不足三位时自动补零)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:04:52