Javascript生成从当前时间开始的一天中的小时数组

时间:2018-03-12 21:55:34

标签: javascript jquery arrays date

您好,我试图生成一天中每小时的数组。但是,我希望它从当前时间开始。

例如,

如果当前时间是下午2:00,则数组应该开始:

[' 1400',' 1500',' 1600',1700',' 1800',' 1900& #39;,' 2000',' 2100',' 2200',' 2300']

而不是

[' 0000',' 0100',' 0300',' 0400',' 0500',& #39; 0600',' 0700',' 0800',' 0900',' 1000',' 1100&# 39;,' 1200',' 1300',' 1400',' 1500',' 1600',1700&# 39;,' 1800',' 1900',' 2000',' 2100',' 2200',&# 39; 2300']

3 个答案:

答案 0 :(得分:2)

非常直截了当。请参阅内联评论:

var result = [];                      // Results will go here
var nowHour = new Date().getHours();  // Get current hour of the day

// Loop from current hour number to 23
for(var i = nowHour; i < 24; i++){
  result.push(i + "00");  // Put loop counter into array with "00" next to it
}

console.log(result); // show results

答案 1 :(得分:1)

您可以使用fill的{​​{1}}和map 像下面的东西。

Array.Prototype

Array(24-new Date().getHours()).fill().map((e,i)=>i+new Date().getHours());

答案 2 :(得分:0)

可以在单个语句中合理有效地完成,包括在10:00之前的小时前导零,并且通常使用带有可选回调的 Array.from ,例如

console.log(
  Array.from(Array(24-new Date().getHours()),(x,i)=>('0'+(23-i)).slice(-2)+'00').reverse()
);

不幸的是它仍然会创建2个数组,第一个是所需长度的空数组,然后用于生成具有所需值的第二个数组,因此不会影响性能。

如果 forEvery 方法没有以相同的方式跳过不存在的属性来自,那么它可能只有一个数组(就像for循环一样)。