js是否可以生成时间间隔数组,比如根据五分钟['00:05', '00:10', ..., '23:55']

如题:是否可以根据指定时间生成时间间隔
比如时间间隔是5分钟
生成数组如下:

['00:05', '00:10','00:15',.....,'23:55']

比如时间间隔是一分钟
生成数组如下

['00:01', '00:02','00:03', '23:59']
回复
阅读 8.6k
5 个回答
var minute = 5; //间隔分钟
var create = function(minute){
  var seconds = minute * 60;
  len = (60*24*60)/seconds; //数组长度
  for(var i=0,total = 0,newArr = [];i<len;i++){
    var h = parseInt(total/3600),
        min = parseInt(total%3600/60);
    newArr.push(s(h)+':'+s(min));
    total+=seconds;
  }
  return newArr;
}
function s(n){
  return n<10?'0'+n:n
}
create(minute);

当然可以,这么简单的数学递增其实直接算就行了,但是借助Date对象来实现更简便

// 起始时间
const date = new Date('2020-03-25 23:58:00');
// 数组长度
const length = 10;
// 时长间隔 ms
const size = 60 * 1000;
const label = v => v < 10 ? `0${v}` : v;
const ary = [];
while (ary.length < length) {
  ary.push(`${label(date.getHours())}:${label(date.getMinutes())}`);
  date.setTime(date.getTime() + size);
}

console.log(ary);

new Date然后获取,加上间隔,然后new Date获取,然后再加上间隔。

上面是不用考虑进位。其实一般来说自己考虑一下进位,一个循环就搞定了吧。

JS里Date能智能处理时间溢出值。

function generateTimeList (delta) {
  let f = n => `${n}`.padStart(2, '0')
  let result = [], date = new Date()
  date.setHours(0)
  date.setMinutes(delta)
  let day = date.getDate()
  while (date.getDate() === day) {
    let h = date.getHours()
    let m = date.getMinutes()
    console.log(h, m)
    result.push(`${f(h)}:${f(m)}`)
    date.setMinutes(m + delta)
  }
  return result
}
console.log(generateTimeList(105))

输出

["01:45","03:30","05:15","07:00","08:45","10:30","12:15","14:00","15:45","17:30","19:15","21:00","22:45"]

function getArray (interval)  {
    const fotmat = (n)=> {
        const h = Math.floor(n/60);
        const m = n%60
        return `${`0${h}`.slice(-2)}:${`0${m}`.slice(-2)}`
    }
    let i = 0;
    var arr = [];
    while(i<24*60){
        arr.push(fotmat(i));
        i += interval;
    }
    return arr
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题