新的js计算时间分段函数
原来初学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 }