如何用JavaScript生成以当前小时开头的当日小时数组
生成从当前小时开始的当日小时数组
嘿,这个需求我之前做项目的时候刚好碰到过,其实实现起来挺直接的,给你两种实用的实现思路,你可以根据自己的代码风格选:
方法一:直观循环法
这种写法逻辑清晰,新手也能一眼看懂:
function getHoursFromNow() { const now = new Date(); const currentHour = now.getHours(); // 拿到当前小时(0-23的数字) const hoursList = []; // 从当前小时循环到23点 for (let hour = currentHour; hour <= 23; hour++) { // 把小时转成两位字符串,再拼上00变成四位格式 const formattedHour = hour.toString().padStart(2, '0') + '00'; hoursList.push(formattedHour); } return hoursList; } // 调用示例 console.log(getHoursFromNow()); // 如果现在是下午2点(14点),输出就是 ['1400', '1500', ..., '2300']
关键点说明:
new Date().getHours():获取当前的小时数,范围是0(午夜)到23(深夜11点)padStart(2, '0'):一定要用这个方法补零!不然早上5点就会变成'500',不符合你要的四位格式- 循环从当前小时开始,一直到23点结束,把每个格式化好的字符串塞进数组就行
方法二:简洁函数式写法
如果喜欢更紧凑的代码,用Array.from可以一行搞定核心逻辑:
function getHoursFromNow() { const currentHour = new Date().getHours(); // 计算剩余小时数:23 - 当前小时 + 1 = 24 - 当前小时 return Array.from({ length: 24 - currentHour }, (_, idx) => { const targetHour = currentHour + idx; return targetHour.toString().padStart(2, '0') + '00'; }); } // 调用示例 console.log(getHoursFromNow());
关键点说明:
Array.from({ length: 24 - currentHour }):先创建一个长度等于“剩余小时数”的空数组- 第二个参数是映射函数,每个位置对应的小时是
当前小时 + 索引,然后同样格式化四位字符串
两种方法都能完美满足你的需求,要是当前时间刚好是23点,数组就只会返回['2300'],这也是符合逻辑的~
内容的提问来源于stack exchange,提问作者lotsonj
相关产品推荐
相关产品推荐

