关于element-UI的日期选择器,一般来说有两种样什的:

地址DatePicker 日期选择器 | Element Plus

一种是单纯的选择一个日期;二是在一个选择器里同时起始开始日期结束日期


本片文章主要记录一下我自己用法,方便以后温故知新。主要怕忘记。

        首先一点,我在开发用到需要两个日期组成一个时间段。而官方文档中有现成的可用,不过有时候一个选择器里同时选择两个日期能够很好的满足引用需求。所以我采用两个选择器来分开定义起始日期结束日期。这样当只需要一个日期时也可以方便取到。不过这样的话会存在一个问题我们分开定义之后,选择器下拉选择时间范围限制问题???。

总结问题如下

三个问题官方文档中给出的日期选择器选择一段时间中都没有,他可以根据你选择的日期判断前后,从而分辨出起始结束日期。那接下来我就说说我的解决方法

我的解决思路使用disableddate属性来分别给下拉选项添加限制代码如下


页面

el-date-picker(v-model="startDate" type="date" placeholder="开始时间" :disabled-date="startDisabledDate" value-format="YYYYMMDD" :clearable="false" @change="startBtnClickHandle")
el-date-picker(v-model="endDate" type="date" placeholder="结束时间" :disabled-date="endDisabledDate" value-format="YYYYMMDD" :clearable="false" @change="btnClickHandle")

注解一下:vmodel:选择器绑定的值;type显示类型(默认data);placeholder:占位提示;disabled-data判断是否禁用日期的函数,接受data对象返回Boolean值;valueformat绑定格式。(与format是两回事);change确认选定的值时触发事件

ts部分

startDisabledDate: any = (time: Date) => {
        return time.getTime() > Date.now()
    } //开始日期不能大于当前日期

endDisabledDate: any = (time: Date) => {
        const startDateLater =  moment(this.startDate).toDate().getTime() //开始时间
        const oneYearLater = moment(this.startDate).add(1, "years").toDate().getTime() //只能选一年之后的日期
        return time.getTime() &gt; Date.now() || time.getTime() < startDateLater || time.getTime() &gt; oneYearLater
    }

注解:因为我设置的日期格式是YYYYMMDD的字符串形式,不能用来比较日期大小,所以我通过moment工具把我的字符串装换为时间格式比较大小

后续补充内容:

moment().add()/subtract()用法
相同 区别、用法
add() (Number, String);根据String类型参数不同,达到改变时间效果,参数可为如下:’year‘,’month‘,’day‘…等等 方法根据参数向后调整当前时间
subtract()

方法根据参数向前调整当前时间

moment工具使用:(更多详情查看文档)

        中文网: Moment.js 中文网

        英文地址:Moment.js | Home


通过上述就可以实现自己总结的三个问题。有问题大佬们帮忙举出,后续有其它会补上。

原文地址:https://blog.csdn.net/Llb_CSDN/article/details/125440211

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45354.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注