用moment实现指定粒度的时间段分割

实现目标:
输入起止时间作为范围,间隔分钟数作为间隔长度(分钟)实现时间段的自动生成方法

如输入 9:00到14:00,15分钟作为间隔即生成如下结构:
用moment实现指定粒度的时间段分割_第1张图片
贴上代码

import monent from 'moment'
/**
* 指定时间范围下生成指定时间间隔的数组数据
*  @param startT { string } 开始时间 "HH:mm"
*  @param endT { string } 结束时间 "HH:mm" 
*  @param interval { int } 间隔时长
* */
const timeSeg = (startT="09:00", endT="14:00", interval=15) => {
    let starTime = monent(startT, "HH:mm");
    let endTime = monent(endT, "HH:mm");
    let diff = endTime.diff(starTime, "minutes");
    let num = Math.ceil(diff / interval);
    var segs = []
    for (let i = 1; i <= num; i++) {
      let timeFrom = starTime.clone().add((i - 1) * interval, "minutes")
      let timeTo = starTime.clone().add(i * interval, "minutes");
      let minutes = timeFrom.minutes();
      let hour = timeFrom.hour()
      segs.push({
        timeFrom: timeFrom.format("HH:mm"),
        timeTo: timeTo.format("HH:mm"),
        seg:minutes === 0 ? true :false,
        title:(hour < 12 ? "上午":"下午") + hour + '点'
      });
    }
    return segs
  }

const TimeSegComponent = () => {
  return (
    
{ timeSeg().map(item => { return (
{item.seg ?
{item.title}
:''} {item.timeFrom}~{item.timeTo}
) }) }
) } export default TimeSegComponent

你可能感兴趣的:(技巧类)