已知起始时间和结束时间,得到期间的时间段,数组表示
1、年月日
2、年月
3、年、季度
4、年
一、得到年月日
1 <script> 2 // 获取间隔天数 3 function getDays(day1, day2) { 4 // 获取入参字符串形式日期的Date型日期 5 var st = day1.getDate(); 6 var et = day2.getDate(); 7 8 var retArr = []; 9 10 // 获取开始日期的年,月,日 11 var yyyy = st.getFullYear(), 12 mm = st.getMonth(), 13 dd = st.getDate(); 14 15 // 循环 16 while (st.getTime() != et.getTime()) { 17 retArr.push(st.getYMD()); 18 19 // 使用dd++进行天数的自增 20 st = new Date(yyyy, mm, dd++); 21 } 22 23 // 将结束日期的天放进数组 24 retArr.push(et.getYMD()); 25 retArr.splice(0,1); 26 27 return retArr; // 或可换为return ret; 28 } 29 30 // 给Date对象添加getYMD方法,获取字符串形式的年月日 31 Date.prototype.getYMD = function(){ 32 33 // 将结果放在数组中,使用数组的join方法返回连接起来的字符串,并给不足两位的天和月十位上补零 34 return [this.getFullYear(), fz(this.getMonth() + 1), fz(this.getDate())].join("-"); 35 } 36 37 // 给String对象添加getDate方法,使字符串形式的日期返回为Date型的日期 38 String.prototype.getDate = function(){ 39 var strArr = this.split('-'); 40 return new Date(strArr[0], strArr[1] - 1, strArr[2]); 41 } 42 43 // 给月和天,不足两位的前面补0 44 function fz(num) { 45 if (num < 10) { 46 num = "0" + num; 47 } 48 return num 49 } 50 51 var a = getDays('2014-12-06', '2017-01-10'); 52 console.log(a); 53 </script>
二、得到年月
1 <script> 2 var yymmDate = function(st,ed){ 3 var arr = [], 4 len; 5 stDate = new Date(st); 6 edDate = new Date(ed); 7 8 stY = stDate.getFullYear(); 9 stM = stDate.getMonth(); 10 edY = edDate.getFullYear(); 11 edM = edDate.getMonth(); 12 len = edM - stM; 13 len2 = edY - stY; 14 15 if(stY != edY){ 16 for(var j=0; j<len2+1; j++){ 17 for(var i=1; i<13; i++){ 18 i = fz(i); 19 arr.push(stY+j + '-' + i); 20 }; 21 }; 22 arr.splice(0,stM); 23 arr.splice(-(12-edM-1),(12-edM-1)); 24 return arr; 25 }else{ 26 for(var i = 1; i<len+1; i++){ 27 i = fz(i); 28 arr.push( 29 stY + '-' + i 30 ); 31 }; 32 arr.push(ed); 33 return arr; 34 }; 35 }; 36 37 function fz(num) { 38 if (num < 10) { 39 num = "0" + num; 40 } 41 return num 42 }; 43 44 var startDate = '2015-01', 45 endDate = '2017-08'; 46 47 var timeData = yymmDate(startDate,endDate); 48 console.log(timeData); 49 </script>
三、得到年、季度
1 <script> 2 var yyqqDate = function(sty,stq,edy,edq){ 3 var arr = [], 4 len; 5 stDate = new Date(sty); 6 edDate = new Date(edy); 7 8 stY = stDate.getFullYear(); 9 edY = edDate.getFullYear(); 10 stM = stq; 11 edM = edq; 12 len = edq - stq; 13 len2 = edY - stY; 14 15 if(stY != edY){ 16 for(var j=0; j<len2+1; j++){ 17 for(var i=1; i<5; i++){ 18 arr.push(stY+j + '年' + i + '季度'); 19 }; 20 }; 21 arr.splice(0,stM-1); 22 arr.splice(-(4-edM),(4-edM)); 23 return arr; 24 }else{ 25 for(var i = 1; i<len+1; i++){ 26 arr.push( 27 stY + '年' + i + '季度' 28 ); 29 }; 30 return arr; 31 }; 32 }; 33 34 var timeData = yyqqDate('2015','1','2018','2'); 35 console.log(timeData); 36 </script>
四、得到年
<script> var yymmDate = function(st,ed){ var arr = [], len; st = new Date(st); ed = new Date(ed); stY = st.getFullYear(); edY = ed.getFullYear(); len = edY - stY; if(stY != edY){ for(var j=0; j<len+1; j++){ arr.push(stY+j); }; return arr; }else{ arr.push(edY); return arr; }; }; var startDate = '2010', endDate = '2017'; var timeData = yymmDate(startDate,endDate); console.log(timeData); </script>