js 获取 对应当前时间 的本周,本月,本季的起始时间
1 var now = new Date(); // 当前日期 2 var nowDayOfWeek = now.getDay(); // 今天本周的第几天 3 var nowDay = now.getDate(); // 当前日 4 var nowMonth = now.getMonth(); // 当前月 5 var nowYear = now.getYear(); // 当前年 6 nowYear += (nowYear < 2000) ? 1900 : 0; 7 var DateUtil = { 8 /** 9 * 获得当前日期 10 * 11 * @returns 12 */ 13 getNowDay : function() { 14 return this.formatDate(new Date()); 15 }, 16 /** 17 * 获得本周的开始时间 18 * 19 * @returns 20 */ 21 getStartDayOfWeek : function() { //获取到当前的年 ,月 ,当前日+1-当前日为本周的第几天 时间格式化后 即可获取星期一的 时间 22 var day = nowDayOfWeek || 7; 23 return this.formatDate(new Date(now.getFullYear(), nowMonth, nowDay + 1 - day)); 24 }, 25 /** 26 * 获得本周的结束时间 27 * 28 * @returns 29 */ 30 getEndDayOfWeek : function() { //获取到当前的年 ,月 ,当前日+7-当前日为本周的第几天 时间格式化后 即可获取星期日的 时间 31 var day = nowDayOfWeek || 7; 32 return this.formatDate(new Date(now.getFullYear(), nowMonth, nowDay + 7 - day)); 33 }, 34 /** 35 * 获得本月的开始时间 36 * 37 * @returns 38 */ 39 getStartDayOfMonth : function() {// 获取到 当前 年,月 ,日=1 时间格式化后 即可 40 var monthStartDate = new Date(nowYear, nowMonth, 1); 41 return this.formatDate(monthStartDate); 42 }, 43 /** 44 * 获得本月的结束时间 45 * 46 * @returns 47 */ 48 getEndDayOfMonth : function() { //获取 当前 年,月,本月天数 时间格式化后 即可 49 var monthEndDate = new Date(nowYear, nowMonth, this.getMonthDays()); 50 return this.formatDate(monthEndDate); 51 }, 52 /** 53 * 获得本月天数 54 * 55 * @returns 56 */ 57 getMonthDays : function() { //获取本月天数 用后一月的格式化时间减去当前月的格式化时间 除以1天的毫秒数 即可 58 var monthStartDate = new Date(nowYear, nowMonth, 1); 59 var monthEndDate = new Date(nowYear, nowMonth + 1, 1); 60 var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24); 61 return days; 62 }, 63 /** 64 * 获得本季度开始 65 * 66 * @returns 67 */ 68 getQuarterStart :function(){ //判断当月的月份处于哪个季度的范围 赋值给变量 日期为1 时间格式化即可 69 let m = 0; 70 if(nowMonth<3){//012 71 m = 0 72 }else if(2<nowMonth && nowMonth<6){//345 73 m =3 74 }else if(5<nowMonth && nowMonth<8){//678 75 m = 6 76 }else if(nowMonth>8){ //9 10 11 77 m = 9 78 } 79 let quarterStart = new Date(nowYear,m,1) 80 return this.formatDate(quarterStart) 81 82 }, 83 /** 84 * 获得本季度结束 85 * 86 * @returns 87 */ 88 getQuarterEnd :function(){ //同上 但是需要获取季度结束月的后一月减去一天的时间 就能获取 本季度的格式化时间了 89 let m = 0; 90 if(nowMonth<3){//012 91 m = 3 92 }else if(2<nowMonth && nowMonth<6){//345 93 m =6 94 }else if(5<nowMonth && nowMonth<8){//678 95 m = 9 96 }else if(nowMonth>8){ //9 10 11 97 m = 0 98 } 99 let quarterEnd = new Date(nowYear,m,1).getTime()-(60*60*24*1000) 100 return this.formatDate(new Date(quarterEnd)) 101 102 }, 103 /** 104 * @param 日期格式化 105 * @returns {String} 106 */ 107 formatDate : function(date) { 108 var myyear = date.getFullYear(); 109 var mymonth = date.getMonth() + 1; 110 var myweekday = date.getDate(); 111 112 if (mymonth < 10) { 113 mymonth = "0" + mymonth; 114 } 115 if (myweekday < 10) { 116 myweekday = "0" + myweekday; 117 } 118 return (myyear + "-" + mymonth + "-" + myweekday); 119 } 120 }; 121 console.log('本周开始时间:',DateUtil.getStartDayOfWeek()) 122 console.log('本周结束时间:',DateUtil.getEndDayOfWeek()) 123 console.log('本月开始时间:',DateUtil.getStartDayOfMonth()) 124 console.log('本月结束时间:',DateUtil.getEndDayOfMonth()) 125 //由于季度划分有两种 这里是按照正常工作时间划分的 按照农历的话 控制下 判断条件 和 赋值 即可 126 //按照标准工作时间的季度划分 为1-3 4-6 7-9 10-12 为四个季度 127 console.log('本季开始时间:',DateUtil.getQuarterStart()) 128 console.log('本季结束时间:',DateUtil.getQuarterEnd())
结果如下