JS/Node で ISO 8601 文字列を秒に変換しようとしています。思いついた最善の方法は次のとおりです。
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」という文字列を入力すると失敗します。もっと良いアイデアをお持ちの方はいませんか?
ベストアンサー1
使用している場合モーメント電話をかけるだけで済みます...
moment.duration('PT15M33S').asMilliseconds();
= 933000 ミリ秒
編集2021: これは機能し、まだ賛成票を獲得していますが、これだけのためにmoment.jsを含めることはお勧めしません。次のような正規表現の回答を使用することをお勧めします。@redgetan の