ウェブサイト検索

node.js - 文字列を時間形式に解析する JavaScript


私は次の時間形式 2h 34m 22s を持っており、次のコードを使って 02:34:22 として解析しています:

const splitterArray = '2h 34m 22s'.split(' ');

let h = '00', m = '00', s = '00';

splitterArray.forEach(val => {
    if (val.includes('h')) {
        h = val.replace('h', '');
    } else if (val.includes('m')) {
        m = val.replace('m', '');
    }
    else if (val.includes('s')) {
        s = val.replace('s', '');
    }
});

console.log(`${h}:${m}:${s}`);

これは、分と秒だけの場合、または時間と秒だけの場合、または時間と分だけの場合も処理します。

ライブラリなど、より良い方法があるかどうか確認しているだけです(おそらく日も受け入れられるように)。

回答 #1

希望する順序で一致させ、コロンで結果を得ることができます。

function convert(string) {
    return Array
        .from('hms', p => (string.match(new RegExp(`\\d+(?=${p})`))?.[0] || '') .padStart(2, '0'))
        .join(':');
}

console.log(convert('2h 34m 22s'));

回答 #2

私は moment ライブラリを使用することをお勧めします。それは、すべての時間のフォーマットや解析のニーズに対応する多くの例とドキュメントがあります:

https://momentjs.com/