【发布时间】:2014-04-04 15:02:01
【问题描述】:
我正在尝试将 ISO 8601 字符串转换为 JS/Node 中的秒数。我能想到的最好的方法是:
function convert_time(duration) {
var a = duration.match(/\d+/g)
var duration = 0
if(a.length == 3) {
duration = duration + parseInt(a[0]) * 3600;
duration = duration + parseInt(a[1]) * 60;
duration = duration + parseInt(a[2]);
}
if(a.length == 2) {
duration = duration + parseInt(a[0]) * 60;
duration = duration + parseInt(a[1]);
}
if(a.length == 1) {
duration = duration + parseInt(a[0]);
}
return duration
}
当我输入诸如“PT48S”、“PT3M20S”或“PT3H2M31S”之类的字符串时,它可以工作,但如果字符串是“PT1H11S”,它就会失败。有人有更好的主意吗?
【问题讨论】:
-
它对我有用 (jsfiddle.net/y6h4t)
-
它可以工作,但同时它输出错误的时间。它应该是 3600 + 11,而不是 71。请注意缺少分钟标记。
-
是的,对不起,我调查 :)
标签: javascript node.js time youtube timestamp