JavaScript/Node.js で Youtube Data API V3 のビデオ継続時間形式を秒数に変換する 質問する

JavaScript/Node.js で Youtube Data API V3 のビデオ継続時間形式を秒数に変換する 質問する

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 の

おすすめ記事