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

React中如何让react-ts-timepicker选中时间为小时区间格式

React-TS-Timepicker 实现选中时间显示为小时区间方案

实现思路

你当前配置了step=60,时间选择粒度为1小时,只需要在选中单个时间点后,自动计算该时间加1小时的对应12小时制格式,再拼接为区间格式存入状态即可。

具体代码修改

1. 新增时间加1小时的工具方法

// 入参为你parseTime后得到的时间对象(包含小时、分钟、am/pm标识)
const getNextHourTime = (timeObj: {hour: number, minute: number, period: 'am'|'pm'}) => {
  let nextHour = timeObj.hour + 1;
  let nextPeriod = timeObj.period;
  // 处理12小时制进位逻辑
  if (nextHour === 12) {
    nextPeriod = timeObj.period === 'am' ? 'pm' : 'am';
  }
  if (nextHour > 12) {
    nextHour = nextHour - 12;
  }
  // 补0处理,保证格式为XX:00
  const formatHour = nextHour.toString().padStart(2, '0');
  return `${formatHour}:00${nextPeriod}`;
}

2. 修改时间选择回调逻辑

handleChangeTime = (e) => {
  let timeResult = this.parseTime(e, null);
  // 拿到选中的开始时间
  const startTime = this.getTime(timeResult);
  // 计算结束时间
  const endTime = getNextHourTime(timeResult);
  // 拼接为区间格式存入状态
  this.setState({ selectedTime: `${startTime} - ${endTime}` });
};

3. 组件部分无需修改,保持原有配置即可

<ReactTimePicker
    value={this.state.selectedTime}
    minTime={this.state.minTime} //09:00am
    maxTime={this.state.maxTime} //09:00pm
    step={60}
    onChange={this.handleChangeTime} 
    allowOnlySuggestions
    className="future-order-time-input"
/>

边界情况验证

  • 选中11:00am,输出为11:00am - 12:00pm
  • 选中12:00pm,输出为12:00pm - 01:00pm
  • 选中11:00pm,输出为11:00pm - 12:00am
    完全符合你需要的格式要求。

内容的提问来源于stack exchange,提问作者Miss. Tea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:27:03