我正在尝试将 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”,它会严重失败。有人有更好的主意吗?
如果您正在使用moment.js http://momentjs.com/你可以简单地打电话...
moment.duration('PT15M33S').asMilliseconds();
= 933000 毫秒
编辑 2021:虽然这有效,并且仍然得到了支持,但我不建议仅仅为此而包含 moment.js。我建议使用正则表达式答案,例如@redgetan的 https://stackoverflow.com/a/30134889/1081447
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)