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

React Big Calendar如何设置15分钟时段及默认15分钟事件?

解决react-big-calendar 15分钟时段及事件添加问题

正确配置时段显示

要实现左侧时段每15分钟显示一次(9:00、9:15、9:30、9:45...),需同时配置step和timeslots参数,且确保使用日/周这类支持小时细分的视图:

import { Calendar, momentLocalizer } from 'react-big-calendar';
import moment from 'moment';

const localizer = momentLocalizer(moment);

const calendarProps = {
  localizer,
  step: 15, // 单个时间间隔的分钟数
  timeslots: 4, // 每小时划分的时段数(60/15=4)
  views: ['day', 'week'], // 仅启用支持细分时段的视图
  // 其他必要配置(events、onSelectEvent等)
};

<Calendar {...calendarProps} />

之前出现的“08:00AM下含4个时段直接到10:00AM”问题,大概率是未正确配置本地化工具(如moment),或切换到了不支持细分时段的月视图。确认使用本地化工具并切换到日/周视图即可正常显示15分钟间隔的时段。

点击单元格添加15分钟事件

默认onSelectSlot会生成30分钟事件,需自定义该函数强制设置15分钟时长:

const handleSelectSlot = ({ start }) => {
  // 手动将结束时间设为开始时间+15分钟
  const newEnd = new Date(start.getTime() + 15 * 60 * 1000);
  // 事件创建逻辑,示例:更新组件events状态
  const newEvent = {
    title: '新事件',
    start,
    end: newEnd,
    id: Date.now(),
  };
  setEvents(prev => [...prev, newEvent]);
};

// 传入Calendar组件
<Calendar
  {...calendarProps}
  onSelectSlot={handleSelectSlot}
  selectable // 必须开启才能点击单元格触发事件创建
/>

这样点击任意15分钟单元格时,都会生成一个时长恰好15分钟、起止时间对齐15分钟节点的事件。

额外注意事项

  • 确保本地化库(moment/date-fns)版本与react-big-calendar兼容,避免时区或日期解析问题导致时段显示异常。
  • 若使用自定义时段渲染组件,不要覆盖默认的时段划分逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:29:55