如何在JavaScript中使用小时和分钟创建数组?

Pat*_*cow 1 javascript date

我正在尝试创建一个时间数组,例如:

1:00
1:15
1:30
1:45
2:00
2:15
...
Run Code Online (Sandbox Code Playgroud)

这是我的代码,它的作用是从当前时间开始的时间开始:

var timeArray = [];
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();

for (var i = h; i <= 24; i++) {
   for (var j = m; j <= 59; j++) {
       if (j % 15 === 0) {
            j = j === 0 ? '00' : j;
            if (i >= 12) {
                timeArray.push((i - 12) + ':' + j + ' PM');
            } else {
                timeArray.push(i + ':' + j + ' AM');
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是m结束了46,就像var m = 50;,然后数组变空了,因为j % 15不再获取0了。

一个如何解决这个问题的想法?

谢谢

Mik*_*ans 5

如果您想要的是数组[“ 1:00”,“ 1:15”,...]那么为什么不仅仅构建它呢?它与“小时”和“分钟”无关,仅与“获得一些明显的连续数字”有关:

var arr = [], i, j;
for(i=0; i<24; i++) {
  for(j=0; j<4; j++) {
    arr.push(i + ":" + (j===0 ? "00" : 15*j) );
  }
}
Run Code Online (Sandbox Code Playgroud)

完成。找到距离15分钟最近的当前时间:

var d = new Date(),
    h = d.getHours(),
    m = 15 * Math.floor(d.getMinutes()/15),
    stamp = h + ":" + (m === 0 ? "00" : m);
Run Code Online (Sandbox Code Playgroud)

只需重新排列时隙:

var pos = arr.indexOf(stamp),
    timelist = arr.slice(pos).concat(arr.slice(0,pos));
Run Code Online (Sandbox Code Playgroud)