获取各种日期年月周操作(个人笔记)

465 阅读1分钟

封装ts文件 根据当前日期获取当前周可操作下一周上一周

// 
export const getWeek = (num, curr) => {
    let currentFirstDate;
    let dayArr: { day: string; week: string }[] = []
    let formatDate = function (date: any) {
        var year = date.getFullYear() + '年';
        var month = (date.getMonth() + 1) + '/';
        var day = date.getDate();
        var week = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'][date.getDay()];

        return { day: month + day, week: week, weekDay: week + "(" + month + day + ")" };
    };
    let addDate = function (date: any, n: number) {
        date.setDate(date.getDate() + n);
        return date;
    };
    let setDate = function (date: any) {
        var week = date.getDay() - 1;
        date = addDate(date, week * -1);
        currentFirstDate = new Date(date);

        for (var i = 0; i < 7; i++) {
            dayArr.push(formatDate(i == 0 ? date : addDate(date, 1)))
        }
        return { dayArr, currentFirstDate }
    };
    if (num) {  //当传入参数表示操作上一周下一周
        return setDate(addDate(curr, num));
    }
    return setDate(new Date())
}

这是控件

<div>
      <el-button type="primary" @click="updateWeek(-7)">上一周</el-button>
      <el-button type="primary" @click="updateWeek(7)">下一周</el-button>
</div>

引入到vue文件

import { getWeek } from "./enum";

生命周期可以直接调用

//创建变量获取 
let weekJson=getWeek()
console.log(getWeek())
//操作上一周下一周
   let updateWeek=(num:number)=>{  //这是点击事件,传入7表示下一周,传入-7表示上一周
        weekJson=getWeek(num,week.currentFirstDate) 
    }

获取当前年所有周的日期

 function getAllSunday(t) {
	      let time = t.replace(/-/g, ":");
	      time = time.split(":");
	      let myTime = new Date(time[0], (time[1] - 1), time[2]);
	   
	      let date = myTime;
	   
	      //无参数传入,获取当年的每个周日
	      // let date = new Date();
	   
	      let year = date.getFullYear();
	      let m, d, day, dayNum = "";
	      let result =[];
	   
	      for (m = 1; m <= 12; m++) {
	          switch (m) {
	              case 1:
	              case 3:
	              case 5:
	              case 7:
	              case 8:
	              case 10:
	              case 12:
	                  dayNum = 31;
	                  break;
	   
	              case 4:
	              case 6:
	              case 9:
	              case 11:
	                  dayNum = 30;
	                  break;
	              case 2:
	                  if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
	                      dayNum = 29;
	                  } else {
	                      dayNum = 28;
	                  }
	                  break;
	          }
	   
	          for (d = 1; d <= dayNum; d++) {
	              date.setMonth(m - 1, d);
	              //返回表示星期的某一天的数字  0 --> 周日
	              day = date.getDay();
	   
	              if (day == 0) {
	                  let month = date.getMonth() + 1;
	                  let day = date.getDate();
	                  if (month < 10) {
	                      month = '0' + month;
	                  }
	                  if (day < 10) {
	                      day = '0' + day;
	                  }
	   
	                  result.push({weekStart:date.getFullYear() + '-' + month + '-' + day})
	              }
	   
	          }
		
	      }
		  result.forEach((item,index)=>{
			  item.weekNum="第"+(index+1)+"周"
		  })
		  
		  	  console.log(result)
	  }
	  
	  function thisDate(date){
		    var year = date.getFullYear() + '-';
			var month = (date.getMonth() + 1) + '-';
			var day = date.getDate();
			var newDate=year+month+day
			console.log("当前日期",newDate)
			return  newDate

	  }
	  getAllSunday(thisDate(new Date()))

image.png

获取当前月的所有日期

  let formatDate = function (date) {
	        var year = date.getFullYear();
	        var month = (date.getMonth() + 1);
	        var day = date.getDate();
			return getDay(year,month)
	    };
	function getDay(Year,Month) {
		var DayCount;
		if (Year<1912 || Month<1)
			return null;
		switch (Month) {
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				DayCount=31;
				break;
			case 2:
				DayCount=28;
				if (Year%4 == 0)
					DayCount=29;
				break;
			default:
				DayCount=30;
				break;
		}
		let arr =[]
		for(let i=1;i<=DayCount;i++){
			if(i<10){
				arr.push(Month+"-"+"0"+i)
			}else{
				arr.push(Month+"-"+i)
			}
		}
		return  arr;
	}
	console.log(formatDate(new Date()))

image.png