zoukankan      html  css  js  c++  java
  • element-ui中el-date-picker时间选择器限制选择7天内数据、获取某一天0点或23:59:59

    涉及到的知识点:获取某一天的0点和23:59:59

    废话不多说,上代码:

    <template>
        <div>
            <el-date-picker
                v-model="timeValue"
                type="datetimerange"
                :picker-options="pickerOptions"
                :default-time="defaultTime"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :value-format="valueFormat"
                :format="format"
                popper-class="cusDatetimer"
                align="right">
            </el-date-picker>
        </div>
    </template>
    
    <script>
    export default {
        data(){
            return {
                timeValue:[],//绑定时间的值
                defaultTime:['00:00:00', '23:59:59'],//选择日期后的默认时间
                valueFormat:"yyyy-MM-dd HH:mm:ss",//绑定值的格式
                format:"yyyy/MM/dd HH:mm:ss",//日期显示格式
                pickerOptions:{//配置项
                    shortcuts: [{//设置快件选项
                            text: "最近7天",
                            onClick: picker => {
                                const end = new Date();
                                const start = this.getBeforeDate(new Date(), 6);
                                picker.$emit("pick", [start, end]);
                            }
                        },
                        {
                            text: "最近30天",
                            onClick: picker => {
                                const end = new Date();
                                const start = this.getBeforeDate(new Date(), 30);
                                picker.$emit("pick", [start, end]);
                            }
                        },
                        {
                            text: "最近90天",
                            onClick: picker => {
                                const end = new Date();
                                const start = this.getBeforeDate(new Date(), 90);
                                picker.$emit("pick", [start, end]);
                            }
                        }
                    ],
                    // 监听每一次选择日期的事件
                    onPick: ({ maxDate, minDate }) => {//最大时间  最小时间 
                        this.choiceDate = minDate.getTime();//当选一个日期时 就是最小日期
                        // // 如何你选择了两个日期了,就把那个变量置空
                        if (maxDate) this.choiceDate = ''
                    },
                    // 设置禁用状态  time是日历上的每一个时间
                    disabledDate: time => {
                        // 如何选择了一个日期
                        if (this.choiceDate) {
                            // 7天的时间戳
                            const one = 6 * 24 * 3600 * 1000;//这里如果乘以7相当于限制8天以内的  所以乘以6
                            // 当前日期 - one = 7天之前
                            const minTime = this.choiceDate - one;
                            // 当前日期 + one = 7天之后
                            const maxTime = this.choiceDate + one;
                            return (
                                time.getTime() < minTime ||
                                time.getTime() > maxTime ||
                                // 限制不能选择今天及以后
                                time.getTime()  >  this.getDayStartOrEnd(new Date(),"end")
                            )
                        } else {
                            // 如果没有选择日期,就要限制不能选择今天及以后
                            return time.getTime() >  this.getDayStartOrEnd(new Date(),"end");
                        }
                    }
                }
            }
        },
        methods:{
            //返回几天前的毫秒数
            getBeforeDate(date = new Date(), days = 7) {
                date.setTime(date.getTime() - 3600 * 1000 * 24 * days);
                return date;
            },
            // 获取当天0点或23:59:59
            getDayStartOrEnd(time,type = "start"){//end  返回毫秒数
                if(type == "start"){
                    return new Date(time).setHours(0,0,0,0);//hourse、min、sec、millisec
                }else{
                    return new Date(time).setHours(23,59,59,999);
                }
            }
        }
    
    }
    </script>
    
    <style lang="scss">
        
    </style>

  • 相关阅读:
    linux脚本Shell之awk详解(二)
    linux脚本Shell之awk详解
    漫谈计算摄像学 (二):利用光场实现“先拍照后对焦”
    漫谈计算摄像学 (一):直观理解光场(Light Field)
    利用OpenCV检测图像中的长方形画布或纸张并提取图像内容
    2048理论上最高能玩到多少分?
    蛋疼之作:99行代码的2048
    用一个玩具例子说明基于视频的超分辨率重建的基本思想
    [C++]二维数组还是一维数组?
    三维空间中如何寻找和一组给定直线垂直程度最高的直线
  • 原文地址:https://www.cnblogs.com/fqh123/p/14456850.html
Copyright © 2011-2022 走看看