转换小时,分钟到秒通过解析youtube t= queryparam在javascript/JQuery
Converting hours,minutes into seconds by parsing youtube t= queryparam in javascript/JQuery
我想在youtube url("http://youtu.be/O4tzHn-EuHc?t=1h5m16s")中解析时间戳t=并计算我需要传递的秒总数作为嵌入youtube url "http://www.youtube.com/embed/XGSy3_Czz8k?start="的开始参数
要获得小时,分钟和秒,我使用reg-exp's如下所示。让我知道任何改进可以在代码中完成,使其简单。
var url ="http://youtu.be/XGSy3_Czz8k?t=1h5m16s";
var timeStamp = url.match("t=(.)*?[&|('s)]");
var hours = timeStamp[0].match(/('d)+h/);
var minutes = timeStamp[0].match(/('d)+m/);
var seconds = timeStamp[0].match(/('d)+s/);
var totalTimeInSeconds = 0;
if (hours) {
hours = hours[0].replace("h","");
totalTimeInSeconds += hours * 60 * 60;
}
if (minutes) {
minutes = minutes[0].replace("m","");
totalTimeInSeconds += minutes * 60;
}
if (seconds) {
seconds = seconds[0].replace("s","")
totalTimeInSeconds += seconds * 1;
}
console.log("hours:"+hours);
console.log("minutes:"+minutes);
console.log("seconds:"+seconds);
console.log("TotalTimeInSeconds:"+ totalTimeInSeconds);
<iframe width="420" height="345"
src="http://www.youtube.com/embed/XGSy3_Czz8k?start="+totalTimeInSeconds>
</iframe>
我认为codereview是获取代码注释的一个很好的来源。
你可以去掉你的String。通过稍微调整正则表达式来替换调用,如下所示:
var hours = timeStamp[0].match(/('d+)h/);
var minutes = timeStamp[0].match(/('d+)m/);
var seconds = timeStamp[0].match(/('d+)s/);
使用这些正则表达式,您将一次捕获所有数字,然后可以像这样使用它们:
if (hours) {
totalTimeInSeconds += parseInt(hours[1], 10) * 60 * 60;
}
if (minutes) {
totalTimeInSeconds += minutes[1] * 60;
}
if (seconds) {
totalTimeInSeconds += seconds[1];
}
这里不需要使用parseInt
,但我可能会介绍它,让它更明确地表明,转换正在发生。我还建议调整您的timeStamp
变量的正则表达式,以便它已经缩小了t
参数的范围。
我认为最简单的是使用RegExp
replace
功能:
var seconds = "1h5m16s".replace(/([0-9]+)h([0-9]+)m([0-9]+)s/, function(match, p1, p2 ,p3) {
return p1 * 60 * 60 + p2 * 60 + p3 * 1
})
注:p3 * 1
是parseInt
的快捷方式。还要注意,replace
将返回一个字符串—如果需要,不要忘记转换为数字。
试试这个
var url ="http://youtu.be/XGSy3_Czz8k?t=1h5m16s";
var timeStamp = url.match("t=(.)*?[&|('s)]");
timeStampSplitted = timeStamp[0].replace("t=","").replace("h", ":").replace("m", ":").replace("s", "").split(':');
// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+timeStampSplitted[0]) * 60 * 60 + (+timeStampSplitted[1]) * 60 + (+timeStampSplitted[2]);
相关文章:
- 有可能过滤来自嵌入式YouTube的声音吗
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- html5视频中的Youtube类型注释
- 链接和youtube的Javascript和regex
- YouTube作为弹出窗口在桌面版本上播放,但不在移动设备上播放
- 使用javascript将视频从我的android应用程序上传到youtube
- internet explorer 8兼容模式下的Youtube api错误
- 如何用低音量自动启动Youtube视频(iframe)
- 可以't从Youtube IFrame更改焦点
- 使用HTML5播放器时使用Javascript更改Youtube视频
- 可以't根据设备自动调整youtube播放器的大小
- Youtube JavaScript API不是't正在初始化
- 有没有办法在dailymotion播放器的新测试版中播放youtube视频
- 在Android Kitkat上模拟鼠标点击Youtube视频
- HtmlUnit无法在youtube上完全加载页面
- 我们如何在dailymotion播放器的新测试版中播放youtube视频
- Lightbox关闭时停止播放Youtube视频
- 未为youtube执行Firefox Addon Pagemod
- 书签:转到嵌入YouTube页面
- 转换小时,分钟到秒通过解析youtube t= queryparam在javascript/JQuery