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

fullCalendar加载MySQL事件时结束日期截断问题求助

解决FullCalendar结束日期显示截断问题

这问题我之前踩过坑!核心原因是FullCalendar的end字段遵循排他性规则:它代表的是事件结束后的那个瞬间,而不是事件的最后一天/时刻。举个例子,如果你的数据库里end_date是2024-01-03,FullCalendar会默认解析成2024-01-03T00:00:00,这意味着事件在1月3日零点就结束了,自然不会在日历上显示3日当天。

解决方案:调整后端返回的end日期

你只需要在load.php里,把从数据库取出的end_date往后推一天,让FullCalendar把这个日期当作事件结束的“截止点”,这样就能包含原本的结束日期了。

修改load.php中的循环部分:

foreach($result as $row)
{
 $data[] = array(
  'id' => $row["ID"],
  'title' => $row["username"],
  'start' => $row["start_date"],
  // 关键修改:给end_date加1天
  'end' => date('Y-m-d', strtotime($row["end_date"] . ' +1 day'))
 );
}

为什么这样有效?

假设数据库里的end_date是2024-01-03,修改后返回给FullCalendar的end值是2024-01-04。FullCalendar会把这个日期理解为“事件在1月4日零点结束”,所以会把1月1日到1月3日的全天都标记为事件时段,正好符合你的需求。

额外提醒(如果涉及事件新增/修改)

如果你在新增或修改事件时(比如index.php里的select、eventResize逻辑),也要注意FullCalendar传递的end值是排他的。比如用户在日历上选择1月1日到1月3日,FullCalendar的end参数其实是2024-01-04T00:00:00,这时候你插入数据库时需要把它减一天,存成2024-01-03,这样前后逻辑就统一了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:58