《业务需求》通过数字获取未来的天数和通过时间16:00到8:00来获取每半个小时的时间

237 阅读1分钟

收到后端数据

initPage() {
	findShopReservationDetailVO({shopId}).then(res => {
			if(res.data.code === 200){
				let temp = res.data.data;
					// 新建日期数组
					let tempDataList = [];
                   			 // temp.availableDates 未来的天数、如:15
					for(let i = 0; i < temp.availableDates; i++){
                   				// 接受日期对象返回
						const { futureTime: date, name } = this.getFutureTime(i);
						tempDataList.push({
							date,
							name
						})
					}
					this.dataList = tempDataList;
						// 每半个小时取时间
					temp.reservationTimeList.forEach(item => {
						this.timeList = this.timeList.concat(this.getOpenTime(item.beginTime,item.endTime));
					})
				}else {
					toast(res.data.msg);
				}
			})
	}

第一步通过数字获取未来天数

	/**
			 * 获取未来时间
			 * method: getFutureTime
			 * @param  days 未来天天数
			 * @return 未来日期和周几
			 * */
			getFutureTime(days = 15) {
			    let newTime = new Date();
			    newTime.setDate(newTime.getDate() + (days));
				const day = newTime.getDay();
				const weeks = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
				const week = weeks[day];
			    let month = newTime.getMonth() + 1;
			    if (month < 10) {
			        month = '0' + month;
			    }
			    let date = newTime.getDate();
			    if (date < 10) {
			        date = '0' + date;
			    }
				const futureTime =  month + "-" + date;
				const name = week;
			    return  {
					futureTime,
					name
				};
			}

第二步计算时间

	/**
			 * 获取营业时间每半个小时
			 * 结束时间每减去半个小时直到小于开始时间,得到每半个小时
			 * method: getOpenTime
			 * @param  beginTime 开始时间
			 * @param  endTime 结束时间
			 * @return timeArr 数组时间
			 * */
			getOpenTime(beginTime,endTime) {
				let timeArr = [];
				const beginStamp = new Date(`2020/09/07 ${beginTime}`).getTime();
				let endStamp = new Date(`2020/09/07 ${endTime}`).getTime() ; 
				// 半个小时的毫秒
				const halfHourStamp = 1800000;
				// 结束时间减去这个取时间
				while(endStamp >= beginStamp){
					const hour = new Date(endStamp).getHours();
					let min = new Date(endStamp).getMinutes();
					min = min > 10 ? min  : '0' + min;
					timeArr.unshift(
						hour + ':' + min
					)
					endStamp = endStamp - halfHourStamp;
				}
				return timeArr;
			}

Date对象需要留意