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'
问题原因
- 错误使用格式化类型:用
numberFormat处理日期字段,会将日期转为时间戳数值后再格式化,导致毫秒位被错误解析为数值的部分。 - 格式符大小写错误: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
相关产品推荐
相关产品推荐

