JavaScript中如何根据时间匹配模式查找数组中的对应视频源
解决方案:根据当前时间匹配对应视频源
没问题,我来帮你实现这个根据时间自动匹配对应视频的功能!核心思路是把当前时间的分钟数划分成15分钟的区间,然后对应到你的videoSources数组索引,再更新currentIndex并切换视频。
步骤1:实现时间匹配逻辑
首先我们写一个函数来计算当前应该播放的视频索引:
function getCurrentVideoIndex() { const now = new Date(); // 获取当前分钟数(范围0-59) const currentMinutes = now.getMinutes(); // 计算所属的15分钟区间:0-14→0,15-29→1,30-44→2,45-59→3 let intervalIndex = Math.floor(currentMinutes / 15); // 确保索引不超过数组长度,避免数组越界 intervalIndex = Math.min(intervalIndex, videoSources.length - 1); return intervalIndex; }
这个逻辑完全贴合你的需求:比如当前时间是00:44时,currentMinutes为44,44/15=2.933取整后是2,对应videoSources[2]也就是0030.mp4,和你举的例子完全一致。
步骤2:整合到视频切换流程
接下来把这个逻辑和你已有的myNewSrc函数结合,写出完整的更新逻辑:
var videoSources = ["0000.mp4", "0015.mp4", "0030.mp4", "0045.mp4", "0100.mp4"]; var currentIndex = 0; // 你已有的切换视频源函数 function myNewSrc() { var myVideo = document.getElementsByTagName('video')[0]; myVideo.src = videoSources[currentIndex]; myVideo.load(); } // 新增:更新当前视频索引并切换视频的函数 function updateVideoBasedOnTime() { currentIndex = getCurrentVideoIndex(); myNewSrc(); }
步骤3:定时自动更新(可选但推荐)
如果需要页面持续根据时间自动切换视频,比如每分钟检查一次时间变化,可以用setInterval实现定时触发:
// 页面加载完成后,先切换到对应时间的视频 updateVideoBasedOnTime(); // 每60秒(60000毫秒)检查一次时间并更新视频 setInterval(updateVideoBasedOnTime, 60000);
这样页面打开时就会加载正确的视频,之后每分钟自动校验时间,确保视频和当前时段匹配。
额外适配说明
关于数组里的0100.mp4:按照基础逻辑,常规分钟数(0-59)不会触发这个视频。如果你希望在整点(比如1:00、2:00等)播放它,可以调整逻辑:
function getCurrentVideoIndex() { const now = new Date(); const currentMinutes = now.getMinutes(); const currentHours = now.getHours(); // 整点且非0点时,播放0100.mp4 if (currentMinutes === 0 && currentHours > 0) { return videoSources.length - 1; } else { let intervalIndex = Math.floor(currentMinutes / 15); // 常规时段避开最后一个索引,留给整点视频 intervalIndex = Math.min(intervalIndex, videoSources.length - 2); return intervalIndex; } }
内容的提问来源于stack exchange,提问作者Emiliano Spada
相关产品推荐
相关产品推荐

