前端实现 无限点击 前一周 后一周 前几个月 后几个月

本文介绍了如何使用ECharts实现动态切换数据,支持展示前一周、本周和后一周的数据,以及如何扩展到前几个月、后几个月和前后一年的时间范围。通过getDates和addDate函数处理日期,适合项目中需要实时更新图表的需求。
摘要由CSDN通过智能技术生成

项目需要实现 点击时间 切换echarts 数据 记录一下
1.实现 前一周 本周 后一周

		// 处理日期
			getDates(date) {
				var year = date.getFullYear() + '-'
				var month = ((date.getMonth() + 1) + '-').length === 2 ? ('0' + (date.getMonth() + 1) + '-') : (date
					.getMonth() + 1) + '-'
				var day = (date.getDate() + '').length === 1 ? ('0' + date.getDate()) : date.getDate()
				this.timeStamp.push(year + month + day)
				return year + month + day
			},
			// 设置日期
			addDate(date, n) {
				date.setDate(date.getDate() + n)
				return date
			},
			setDate(date) {
				this.timeStamp = []
				var week = date.getDay() - 1
				date = this.addDate(date, week * -1)
				this.currentFirstDate = new Date(date)
				for (var i = 0; i < 7; i++) {
					this.getDates(i === 0 ? date : this.addDate(date, 1)) // 星期一开始
				}
			},

上一周 :

		lastWeek() {
				this.setDate(this.addDate(this.currentFirstDate, -7))
				this.startTime_line = this.timeStamp[0]
				this.endTime_line = this.timeStamp[6]
			},

下一周:

			nextWeek() {
				this.setDate(this.addDate(this.currentFirstDate, 7))
				this.startTime_line = this.timeStamp[0]
				this.endTime_line = this.timeStamp[6]
			},

本周:

			onWeek() {
				this.setDate(this.addDate(new Date(), -1))
			},

1.前几个月 后几个月
前三个月 :

	// 前三个月
			GetPreMonthDay(date, monthNum) {
				var dateArr = date.split('-');
				var year = dateArr[0]; //获取当前日期的年份
				var month = dateArr[1]; //获取当前日期的月份
				var day = dateArr[2]; //获取当前日期的日
				var days = new Date(year, month, 0);
				days = days.getDate(); //获取当前日期中月的天数
				var year2 = year;
				var month2 = parseInt(month) - monthNum;
				if (month2 <= 0) {
					var absM = Math.abs(month2);
					year2 = parseInt(year2) - Math.ceil(absM / 12 == 0 ? 1 : parseInt(absM) / 12);
					month2 = 12 - (absM % 12);
				}
				var day2 = day;
				var days2 = new Date(year2, month2, 0);
				days2 = days2.getDate();
				if (day2 > days2) {
					day2 = days2;
				}
				if (month2 < 10) {
					month2 = '0' + month2;
				}
				if (day2 < 10) {
					day2 = '0' + day2;
				}
				var t2 = year2 + '-' + month2 + '-' + day2;
				this.startTime = t2
				this.endTime = date
			},

调用方式
let data = ‘2021-05-12’
GetPreMonthDay(data , 3) 从5.12号往前推3个月
后几个月:

			GetNextMonthDay(date, monthNum) {
				var dateArr = date.split('-');
				var year = dateArr[0]; //获取当前日期的年份
				var month = dateArr[1]; //获取当前日期的月份
				var day = dateArr[2]; //获取当前日期的日
				var days = new Date(year, month, 0);
				days = days.getDate(); //获取当前日期中的月的天数
				var year2 = year;
				var month2 = parseInt(month) + parseInt(monthNum);
				if (month2 > 12) {
					year2 = parseInt(year2) + parseInt((parseInt(month2) / 12 == 0 ? 1 : parseInt(month2) / 12));
					month2 = parseInt(month2) % 12;
				}
				var day2 = day;
				var days2 = new Date(year2, month2, 0);
				days2 = days2.getDate();
				if (day2 > days2) {
					day2 = days2;
				}
				if (month2 < 10) {
					month2 = '0' + month2;
				}
				if (day2 < 10) {
					day2 = '0' + day2;
				}
				var t2 = year2 + '-' + month2 + '-' + day2;
				this.startTime = date
				this.endTime = t2
			},

调用方式 同前几个月 GetNextMonthDay(data, 3)

3.前一年 后一年

			// 前一年 后一年 
			getYear(type, dates, time) {
				if (time) {
					var dd = new Date(time);
				} else {
					var dd = new Date();
				}
				var n = dates || 0;
				var year = dd.getFullYear() + Number(n);
				if (type == "s") {
					var day = year + "-01-01";
				};
				if (type == "e") {
					var day = year + "-12-31";
				};
				if (!type) {
					var day = year + "-01-01/" + year + "-12-31";
				};
				return day;
			},

调用方式
this.getYear(‘s’, -1,endTime)
this.getYear(‘s’, -1, endTime)
s 一年开始时间 e为一年结束时间
前一年 为 -1 后一年为1 当前年 为0
endTime 从何时开始推算 endTime = ‘2021-05-10’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值