elementPlus/vue3 日期选择date-picker组件,选择周(week),且调整周一为起始日,获取选择周在一年中的起始日、结束日

先说效果:

在el-date-picker中选择任意一天,定位至该周范围(展示方式为周一至周日),返回值为该周在该年的起始日期和结束日期,还可返回该年年份及该周在该年为第几周。

效果如下:

实现代码如下:


{{ form.year }}年第{{ form.week }}周:{{ form.startTime }}至{{ form.endTime }}
<el-date-picker 
  v-model="form.date" 
  type="week"
  value-format="YYYY-MM-DD/ww"
  :format="`${form.year}年 第${form.week}周`"
  placeholder="请选择周"
  @change="weekChange" />



//js部分
import dayjs from 'dayjs';
dayjs.en.weekStart = 1;  //el-date-picker组件展示:调整周一为起始日

const form = reactive<any>({
    date: dayjs(),   //el-date-picker组件展示:调整周一为起始日
    startTime:'',
    endTime:'',
    week:0,
    year:'',
})

//处理展示数据
const weekChange = (value: any) => {
    let arr = value.split('/') 
    let val = dayjs(arr[0])?.day(1)?.toDate();
    form.startTime = dayjs(new Date(val.getTime())).format('YYYY-MM-DD'); //开始时间
    form.endTime = dayjs(new Date(val.getTime() + (24 * 60 * 60 * 1000) * 6)).format('YYYY-MM-DD'); //结束时间
    form.week = Number(arr[1])
    //@ts-ignore
    form.year = dayjs(val)?.weekYear()  //年份
}

dayjs需下载且引入dayjs插件,或从element-plus中导入(本来我从elementplus中导入的,但是好像有些方法不能用,还是用了自己引入的dayjs)

网上搜了半天没找到免费的,自己摸索了下,亲测可用,供参考。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值