function formatTimeUnit(input, unit){
var index = input.indexOf(unit);
var output = "00"
if(index < 0){
return output; // unit isn't in the input
}
if(isNaN(input.charAt(index-2))){
return '0' + input.charAt(index-1);
}else{
return input.charAt(index-2) + input.charAt(index-1);
}
}
我这样做的时候,分,秒。我也放弃小时,如果没有任何在输入,这当然是可选的。
function ISO8601toDuration(input){
var H = formatTimeUnit(input, 'H');
var M = formatTimeUnit(input, 'M');
var S = formatTimeUnit(input, 'S');
if(H == "00"){
H = "";
}else{
H += ":"
}
return H + M + ':' + S ;
}
6条答案
按热度按时间elcex8rz1#
下面是获取总秒数和其他部分的基本代码。我觉得这样做很不舒服,因为规则说,任何时候你想日期逻辑,你不应该:)但无论如何,在这里-谷歌使它不容易,在getduration播放器API中提供总秒数,并在gdata API中提供完全不同的格式。
3hvapo4f2#
以下是如何通过Youtube API(v3)以简单的方式获取youtube视频数据,并将视频时长(ISO 8601)转换为秒。不要忘记将URL中的{您的视频ID }和{您的密钥}属性更改为您的视频ID和您的谷歌公钥。您可以创建一个访问谷歌开发者控制台的公钥。
l2osamch3#
虽然这些答案在技术上是正确的;如果你打算做很多关于时间和持续时间的事情,你应该看看momentjs。也可以看看moment-duration-formats,它使格式化持续时间就像常规的momentjs time一样简单
这两个模块如何轻松实现此功能的示例
它会输出05:33。还有很多其他的用途。
虽然youtube使用ISO 8601格式是有原因的,因为它是一个标准,所以请记住这一点。
d7v8vwbk4#
我通过检查单元左边的两个索引字符(H,M,S)并检查它是否是一个数字,如果不是,则单元是一个数字,我将额外添加一个“0”。否则,我将返回两位数。
我这样做的时候,分,秒。我也放弃小时,如果没有任何在输入,这当然是可选的。
那就这么叫吧
我用这个来格式化youtube数据API视频持续时间。希望这对一些人有帮助
pes8fvy95#
最简单的方法是使用moment-duration-formats,下面是一个定制函数,用于将YouTube API持续时间响应转换为hh:mm:ss格式。
jgovgodb6#
在2023年的“时刻”,Moment.js处于传统模式。
您可以使用Luxon.js(Moment.js的后代)的Duration类来解析ISO8601持续时间。