新的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 }

 

posted @ 2017-11-17 15:46  西窗故事  阅读(2603)  评论(0编辑  收藏  举报