【问题标题】:Parsing string into Time format JavaScript将字符串解析为时间格式 JavaScript
【发布时间】:2021-07-13 23:18:00
【问题描述】:

我有以下时间格式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}`);

这也处理只有分钟和秒,或只有小时和秒或只有小时和分钟的情况。

只是检查是否有更好的方法来做到这一点,比如图书馆左右(也许也接受几天)。

【问题讨论】:

  • 时间字符串是始终采用这种格式,还是在转换为“2h 34m 22s”格式之前的某个时间点将其作为日期字符串/对象?如果您有必要的日期字符串/对象,您可以使用 date-fns 或 momentjs 进行格式化
  • @ElbertBae 总是这样 .. 也可以包括天数(2d 22h 33m 12s)。

标签: javascript node.js typescript datetime time


【解决方案1】:

我建议使用 moment 库。它有大量示例和文档,可满足您所有时间格式化和解析需求:

https://momentjs.com/

【讨论】:

    【解决方案2】:

    你可以按照想要的顺序匹配并得到带有冒号的结果。

    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'));

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      相关资源
      最近更新 更多