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

FullCalendar v5.11.3格式化日期报错,需适配MySQL日期格式

FullCalendar v5.11.3 日期格式化报错解决方案(适配MySQL格式)

错误原因分析

你遇到的Uncaught TypeError: context.cmdFormatter is not a function错误,核心原因是格式字符串使用了FullCalendar v5不兼容的指令——你用了大写的YYYY表示年份,但FullCalendar v5的日期格式语法中,普通年份需要用小写的yyyy,大写Y代表的是「基于周的年份」,这种不兼容的指令会导致内部格式化器初始化失败,抛出该错误。

解决方案1:修正格式字符串

将格式字符串中的YYYY改为yyyy,直接使用FullCalendar.formatDate或日历实例的formatDate方法即可正常工作:

eventChange: function(arg) {  
  // 修正后的格式字符串
  var theStart = FullCalendar.formatDate(arg.event.start, "yyyy-MM-dd HH:mm:ss");
  var theEnd = FullCalendar.formatDate(arg.event.end, "yyyy-MM-dd HH:mm:ss");
  
  console.log(theStart); // 输出类似:2022-11-19 11:00:00
  // 后续可将theStart/theEnd传入MySQL更新逻辑
}

解决方案2:使用dateEnv.format适配多语言环境

如果需要更灵活地适配你的locale: 'es'设置,推荐使用日历实例的dateEnv.format方法,它基于原生Intl.DateTimeFormat,能更好地兼容区域设置:

eventChange: function(arg) {
  var formatOptions = {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: false // 强制24小时制,适配MySQL格式
  };

  var theStart = calendar.dateEnv.format(arg.event.start, formatOptions);
  var theEnd = calendar.dateEnv.format(arg.event.end, formatOptions);
  
  // 输出示例(西班牙语环境下仍会保持yyyy-MM-dd HH:mm:ss格式)
  console.log(theStart);
}

额外注意事项

  1. 确保你已正确加载FullCalendar的核心脚本及对应locale文件(如es.js),脚本加载顺序不可颠倒;
  2. 若使用模块化导入(如npm),需确保从@fullcalendar/core正确导入formatDate方法:
    import { formatDate } from '@fullcalendar/core';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:45:17