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); }
额外注意事项
- 确保你已正确加载FullCalendar的核心脚本及对应locale文件(如
es.js),脚本加载顺序不可颠倒; - 若使用模块化导入(如npm),需确保从
@fullcalendar/core正确导入formatDate方法:import { formatDate } from '@fullcalendar/core';
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

