datePicker一个或多个日期组件,如何快捷选择多个日期(时间段)

elementUI的组件文档中没有详细说明type="dates"如何快捷选择一个时间段的日期,我们可以通过picker-options参数来设置快捷选择:

复制代码
<div class="block">
    <span class="demonstration">多个日期</span>
    <el-date-picker
      type="dates"
      v-model="value4"
      :picker-options="pickerOption"
      placeholder="选择一个或多个日期">
    </el-date-picker>
  </div>
</div>

通过设置变量pickerOption的值可设置快捷选择:

复制代码
pickerOption:{
	shortcuts:[
		text:'这半个月',
		onClick(picker){
			let end = new Date();
			let start = dateFormat(new Date(),'-');
			end.setTime(end.getTime() + 3600 * 1000 * 24 * 14);
			end = dateFormat(end,'-');
			let allDate = getAllDate(start,end);
			picker.$emit('pick', [...allDate]);
		}
	]
}

其中dateFormat方法是将日期格式化,getAllDate方法是获取开始和结束日期之间的全部日期,在data中定义:

复制代码
let dateFormat = (time,h='')=>{
	let ymd = '';
	let month = (time.getMonth() + 1 )>=10 ? (time.getMonth() + 1) : ('0' + (time.getMonth() +1));
	let day = time.getDate() >= 10? time.getDate() : ('0' + time.getDate());
	ymd += time.getFullYear() +h;
	ymd += month + h;
	ymd += day;
	return ymd;
}

let getAllDate=(start,end)=>{
	let allDateArr=[];
	let startArr = start.split('-');
	let endArr = end.split('-');
	let db = new Date();
	let db.setUTCFullYear(startArr[0[,startArr[1]-1,startArr[2]);
	let de = new Date();
	de.setUTCFullYear(endArr[0[,endArr[1]-1,endArr[2]);
	let unixDb = db.getTime();
	let unixDe = de.getTime();
	let stamp;
	const oneDay = 24*60*60*1000;
	for(stamp = inixDb;stamp<=unixDe;){
		allDateArr.push(dateFormat(new Date(parseInt(stamp)),'-'));
		stamp = stamp+oneDay;
	}
	return allDateArr;
}
相关推荐
海兰5 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
小磊哥er6 小时前
深入解构Claude Code - 第 7 篇 · 连接外面的世界
javascript·ai编程
小磊哥er6 小时前
深入解构Claude Code - 第 6 篇 · 终端里的图形界面
javascript·ai编程
海兰6 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融
可乐鸡翅yeah_8 小时前
hls.js 内存泄漏实战排查,直播 M3U8 长时间播放异常定位方案
开发语言·javascript·python·django·ecmascript·m3u8·m3u8在线
可乐鸡翅yeah_8 小时前
第三方接口对接 M3U8 流媒体排坑实战,解决外部服务商流兼容难题
前端·javascript·python·django·html·m3u8·m3u8在线
默_笙8 小时前
🏠 「LLM Notes」:我用 Next.js + Redis 给自己造了个笔记博客
前端·javascript
ruanCat10 小时前
Prettier 明明执行成功,Markdown 为什么还是没变?一次插件误诊复盘
前端·javascript·node.js
软件开发技术深度爱好者10 小时前
在线学习实践 TypeScript 的官方Playground(演练场)使用介绍
javascript·学习·typescript
jay神11 小时前
【计算机毕业设计】基于Spring Boot的宠物领养管理系统
java·spring boot·后端·vue·毕业设计·宠物