1. 程式人生 > 其它 >js 獲取 對應當前時間 的本週,本月,本季的起始時間

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())

結果如下