TimePicker开始时间不能大于结束时间

        return (
              <div>
                <div>
                 <TimePicker
                    format={'HH:mm'}
                    placeholder='' 
                    className="am-ml-10" 
                    value={text[0] ? moment(text[0], 'HH:mm') : ''} 
                    disabledHours={(e) => this.getDisabledHours(e, index, 'startTime')}
                    disabledMinutes={(e) => this.getDisabledMinutes(e, index, 'startTime')}                            
                    onChange={(e) => this.handleChangeTime(e, index,'startTime')} 
                    style={{ width: '110px' }} />
                    <span style={{margin: '0 5px'}}>to</span>
                  <TimePicker
                    format={'HH:mm'}
                    placeholder='' 
                    className="am-ml-10" 
                    disabledHours={(e) => this.getDisabledHours(e, index, 'endTime')}
                    disabledMinutes={(e) => this.getDisabledMinutes(e, index, 'endTime')}    
                    value={text[1] ? moment(text[1], 'HH:mm') : ''} 
                    onChange={(e) => this.handleChangeTime(e, index,'endTime')} 
                    style={{ width: '110px' }} />
                </div>
                {(!text[0] || !text[1]) && record.dataType == 'comfirm' && (
                    <div className="txt-danger">Session is required</div>
                )}
               </div>
            );


//更改时间
handleChangeTime = (time, index, type) => {
    this.bindListener()
    let splitTime = this.getValue(time,'time')
    let value = splitTime? splitTime.split(':') :''
    let timeArrStart = this.timeStartComputer(index)
    let timeArrEnd = this.timeEndComputer(index)
    let dataTime = this.dealTimeData('', index, type)
    const { columnData } = this.state;
    if(type == 'startTime') {
        columnData[index].timeStart[0] = splitTime
        if( timeArrEnd[1] <= value[1]) {
            dataTime =  this.range(Number(timeArrEnd[0]), 24)
        }
    }else{
        columnData[index].timeStart[1] = splitTime
        if( timeArrStart[1] >= value[1]) {
            dataTime = this.range(0, Number(timeArrStart[0]))
        }
    } 
    this.setState({
        columnData,
        disabledHourValue: dataTime
    })
}

getDisabledHours = () => {
    return this.state.disabledHourValue
}

range = (start, end) => {
    const result = [];
    if (start > end) return []
    for (let i = start; i <= end; i++) {
        result.push(i);
    }
    return result;
};

//時間計算
timeStartComputer = (index) => {
    const {  columnData } = this.state;
    let timeStart = columnData[index].timeStart[0] 
    let timeArrStart = timeStart? timeStart.split(':') :''
    return timeArrStart
}
timeEndComputer = (index) => {
    const {  columnData } = this.state;
    let timeEnd = columnData[index].timeStart[1] 
    let timeArrEnd = timeEnd ? timeEnd.split(':') : ''
    return timeArrEnd
}

//开始时间不能大于结束时间
dealTimeData = (value, index, type) => {
    let timeArrStart = this.timeStartComputer(index)
    let timeArrEnd = this.timeEndComputer(index)
    if( type == 'startTime'){
        return this.range(Number(timeArrEnd[0])+1, 24)
    }
    if( type == 'endTime' ) {
        return this.range(0, Number(timeArrStart[0]-1))
    }
}

getDisabledMinutes = ( value, index, type ) => {
    let timeArrStart = this.timeStartComputer(index)
    let timeArrEnd = this.timeEndComputer(index)
    if( type == 'startTime'){
        if(value && value == timeArrEnd[0] ) {
            return this.range(Number(timeArrEnd[1]), 60)
        }
        return []
    }
    if( type == 'endTime' ) {
        if(value && value == timeArrStart[0]  ) {
            return this.range(0, Number(timeArrStart[1]))
        }
        return []
    }
}

//开始日期不能大于结束日期
disabledDate = (current, index, type) => {
    const {  columnData } = this.state;
    if( type == 'startDay') {
        if( columnData[index].effectiveTimeAll[1] ) {
            return current && current >= moment(columnData[index].effectiveTimeAll[1]).add(1, 'days').startOf('day');
         }
    }
    if ( type == 'endDay') {
        if( columnData[index].effectiveTimeAll[0] ) {
           return current && current < moment(columnData[index].effectiveTimeAll[0]).subtract(1, 'days').endOf('day');
        }
    }

}

、获取日期的23时59分59秒
//今天的
moment().endOf(‘day’)
//指定日期的
moment(‘2020-06-25’).endOf(‘day’)
2、获取日期的0时0分0秒
//今天的,跟上面的endOf一样的
moment().startOf(‘day’)
3、获取时间戳
moment().endOf(‘day’).valueOf()
4、时间戳转日期
moment(val).format(“YYYY-MM-DD HH:mm:ss”)
5、获取当前时间前 X 天
moment().subtract(1, “days”).format(“YYYY-MM-DD HH:mm:ss”); //1就是前1天,2就是前两天
1
6、获取当前时间前 X 周
moment().subtract(1, “weeks”).format(“YYYY-MM-DD”);//月把weeks改成months
1
可以取的值
years
quarters
months
weeks
days
hours
minutes
seconds
milliseconds

精进版

  //时间格式化
    getValue = (val,type) => {
        if(type == 'date') {
            if (val) {
                return moment(val)
              }
              return null
        }else {
            if (val) {
                return moment(val).format("HH:mm")
              }
             return null
        }
    }

    getDateParams = (val) => {
        if (val) {
            return moment(val).format("YYYY-MM-DD")
        }
         return null
    }
    getDate = (val) => {
        if (val) {
            return moment(val).format("DD-MMM-YYYY")
        }
         return null
    }

    range = (start, end) => {
        const result = [];
        if (start > end) return []
        for (let i = start; i <= end; i++) {
            result.push(i);
        }
        return result;
    };

  //時間計算
  timeStartComputer = (index) => {
        const {  columnData } = this.state;
        let timeStart = columnData[index].timeStart[0] 
        let timeArrStart = timeStart? timeStart.split(':') :''
        return timeArrStart
  }
    timeEndComputer = (index) => {
        const {  columnData } = this.state;
        let timeEnd = columnData[index].timeStart[1] 
        let timeArrEnd = timeEnd ? timeEnd.split(':') : ''
        return timeArrEnd
    }

    //开始时间不能大于结束时间
    getDisabledHours = (value, index, type) => {
            let timeArrStart = this.timeStartComputer(index)
            let timeArrEnd = this.timeEndComputer(index)
            if( type == 'startTime'){
                if( timeArrEnd[1] <= timeArrStart[1]) {
                    return this.range(Number(timeArrEnd[0]), 24)
                }
                return this.range(Number(timeArrEnd[0])+1, 24)
            }
            if( type == 'endTime' ) {
                if(  timeArrStart[1] >= timeArrEnd[1] ) {
                    return this.range(0, Number(timeArrStart[0]))
                }
                return this.range(0, Number(timeArrStart[0]-1))
            }  
    }

    changeContainer = (value) =>{
        let timeArrEnd = value ? value.split(':') : ''
        return timeArrEnd
    }

    //更改时间
    handleChangeTime = (time, index, type) => {
        this.bindListener()
        let temp = this.getValue(time,'time');
        let a = this.changeContainer(temp)
        const { columnData } = this.state;
        if(type == 'startTime') {
            let b = this.changeContainer(columnData[index].timeStart[1])
            if(a[0] == b[0]){
                if(a[1] >= b[1]){
                    let start = moment().format('YYYY-MM-DD')+' ' +columnData[index].timeStart[1]
                    columnData[index].timeStart[0] = moment(start).subtract(1, "minutes").format("HH:mm"); 
                }else{
                    columnData[index].timeStart[0] = temp
                }
            }else if(a[1]){
                if(a[1] >= b[1]) {
                    if(a[0] > b[0]){
                      let hourlowEnd = moment().format('YYYY-MM-DD')+' ' + b[0]+":"+ a[1]
                      columnData[index].timeStart[0] = moment(hourlowEnd).subtract(1, "hour").format("HH:mm"); 
                    }else{
                        columnData[index].timeStart[0] = temp
                    }
                }else{
                    if(a[0] > b[0]){
                      let hourhighEnd = moment().format('YYYY-MM-DD')+' ' + b[0]+":"+ a[1]
                      columnData[index].timeStart[0] = moment(hourhighEnd).format("HH:mm"); 
                    }else{
                        columnData[index].timeStart[0] = temp
                    }
                }
            }else{
                columnData[index].timeStart[0] = temp
            }
        }else{
            let c = this.changeContainer(columnData[index].timeStart[0])
            if(a[0] == c[0]){
                if(c[1] >= a[1]){
                    let end = moment().format('YYYY-MM-DD')+' ' +columnData[index].timeStart[0]
                    columnData[index].timeStart[1] = moment(end).add(1, "minutes").format("HH:mm"); 
                }else{
                    columnData[index].timeStart[1] = temp
                }
            } else if(a[1]) {
                if(a[1] > c[1]) {
                    if(a[0] < c[0]){
                      let hourlowEnd = moment().format('YYYY-MM-DD')+' ' + c[0]+":"+ a[1]
                      columnData[index].timeStart[1] = moment(hourlowEnd).format("HH:mm"); 
                    }else{
                        columnData[index].timeStart[1] = temp
                    }
                }else{
                    if(a[0] <= c[0]){
                      let hourhighEnd = moment().format('YYYY-MM-DD')+' ' + c[0]+":"+ a[1]
                      columnData[index].timeStart[1] = moment(hourhighEnd).add(1, "hour").format("HH:mm"); 
                    }else{
                        columnData[index].timeStart[1] = temp
                    }
                }
            }else{
                columnData[index].timeStart[1] = temp
            }
        } 
      
        this.setState({
            columnData
        })
    }

    getDisabledMinutes = ( value, index, type ) => {
        let timeArrStart = this.timeStartComputer(index)
        let timeArrEnd = this.timeEndComputer(index)
        if( type == 'startTime'){
            if(value && value == timeArrEnd[0] ) {
                return this.range(Number(timeArrEnd[1]), 60)
            }
            return []
        }
        if( type == 'endTime' ) {
            if(value && value == timeArrStart[0]  ) {
                return this.range(0, Number(timeArrStart[1]))
            }
            return []
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值