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

使用date-io解析日期报错:格式字符串包含未转义拉丁字母`g`如何解决?

错误原因
  1. 核心错误来自你使用的dateFormat格式字符串不符合date-fns的格式规则:date-fns的格式令牌中没有小写g这个有效标识,如果你之前是从moment.js等其他日期库迁移过来,直接复用了原来的格式串(比如包含gg代表周年的写法),就会触发这个未转义字符报错。
  2. 你调用date-fns的format方法时传入了多余的第三个参数new Date(),不符合该函数的参数要求,也会额外引发解析异常。
  3. 你在App.js中的MuiPickersUtilsProvider配置是正确的,该错误和配置项无关,不需要调整这部分代码。
解决方案
  • 调整dateFormat字符串规则:
    • 如果你是想用g实现日期格式化逻辑:将小写g替换为date-fns支持的对应格式符即可,比如你要取周年,date-fns用YY表示两位周年、YYYY表示四位周年,用G表示纪元标识,按你的业务需求替换即可。
    • 如果你是想在日期字符串中原样输出g字符:用单引号包裹g做转义即可,比如需要输出2024g06,格式串写为yyyy'g'MM。
  • 修正format函数的调用参数,删除多余的第三个入参,修正后的代码如下:
.map((column) => {
  return column.column.dataType === "DATE" ? (
    <TableCell key={column.id} align={column.align}>
      {format(
        new Date(parseFloat(column.value)),
        dateFormat
      )}
      {console.log(parseFloat(column.value))}
    </TableCell>
  )
  // 补充你原有非DATE类型列的返回逻辑即可
})
  • 调整完成后如果还有报错,可以打印dateFormat的实际值,逐一检查所有字符是否都是date-fns支持的格式令牌,避免混用其他日期库的格式规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:15:06