我正在尝试创建一个时间数组,例如:
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了。
一个如何解决这个问题的想法?
谢谢
如果您想要的是数组[“ 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)