原來初學js時寫過一篇js分段的文章,洋洋灑灑一大篇,現在看來蠢到炸天,最近有時間,重新整理了一下,,想把原來的刪了,免得被人看見丟人,但是想想,就讓他在那存在着吧,看到時,還能激勵着我向更好的方向前進!!
基本原理就是根據時間戳,計算前后時間戳的差值對取多少份,求得平均數,每次在開始時間的基礎上加上差值,形成新的時間戳,再將時間戳轉換成我所需要的時間格式
是不是超簡單,我覺得也是,發現date函數功能如此強大,其實都沒有寫的必要,直接粘代碼上來,大家參考吧,有啥問題請留言
1 function range(beginTime, endTime) {//后台大哥要求的數據格式,在這邊存入 2 this.beginTime = beginTime; 3 this.endTime = endTime; 4 } 5 6 function addDatetime(dt) {//時間戳轉換日期格式,我這邊的格式是 "2017-10-05 01:02:56",需要補零 7 dt = new Date(dt); 8 var dataTime_str = ""; 9 10 var Year = dt.getFullYear(); 11 dataTime_str += Year + "-";//存入年 12 13 var mon = parseInt(dt.getMonth()) + 1; 14 dataTime_str += (mon < 10 ? ("0" + mon) : mon) + "-";//存入月 .getMonth()函數從0月開始算,正確日期應該+1 15 16 var day = dt.getDate(); 17 dataTime_str += (day < 10 ? ("0" + day) : day) + " ";//存入日 18 19 var hh_ = dt.getHours(); 20 dataTime_str += (hh_ < 10 ? ("0" + hh_) : hh_) + ":";//存入時 21 22 var mm_ = dt.getMinutes(); 23 dataTime_str += (mm_ < 10 ? ("0" + mm_) : mm_) + ":";//存入分 24 25 var ss_ = dt.getSeconds(); 26 dataTime_str += (ss_ < 10 ? ("0" + ss_) : ss_);//存入秒 27 28 return dataTime_str; 29 } 30 31 function TimeRange(startTimes, endTimes, amount) {// 傳入參數 2017-10-05 2017-10-06 24 開始時間 結束時間 多少段 32 startTimes = Date.parse(new Date(startTimes + " 00:00:00")); // 計算開始時間的時間戳 33 endTimes = Date.parse(new Date(endTimes + " 23:59:59")); // 計算結束時間的時間戳 34 var timeAll = endTimes - startTimes; // 總時間間隔 35 if(endTimes <= startTimes) { 36 return -1; 37 } 38 if(amount < 2) { 39 return -2; 40 } 41 try { 42 var timeRange = new Array(); // return數組初始化 43 var timeGap = timeAll / amount ; // 分割后時間間隔 44 45 var slidingTime = 0; 46 var momentTime_front = ""; 47 var momentTime_rear = ""; 48 53 for(var i = 0; i < amount; i++) { 54 55 momentTime_front = addDatetime(startTimes + timeGap * (i )); 56 momentTime_rear = addDatetime(startTimes + timeGap * (i +1) - 1000); 57 58 timeRange.push(new range(momentTime_front, momentTime_rear)); 59 } 60 64 return timeRange; 65 } catch(e) { 66 alert("出錯了:" + e); 67 } 68 }