代码之家  ›  专栏  ›  技术社区  ›  mrgreenfrog

使用javascript的数字时间到可读持续时间

  •  0
  • mrgreenfrog  · 技术社区  · 7 年前

    我正在使用 clockpicker 收集用户输入,这些输入将在字符串中给我一个数字时间戳。

    例如:

    02:15
    

    我希望在数据库中保持原样,但在我看来,使用以下示例将其打印为:

    2h 15m 
    

    删除不必要的零,隔开,并添加“h”表示“小时”,添加“m”表示“分钟”。此外,如果没有指定小时,我宁愿只获得分钟,反之亦然,如果没有指定分钟。

    我找到的所有示例都是关于使用JavaScript中的“Date”函数转换完整的时间戳。我似乎不能只使用这个值,我对正则表达式很糟糕。

    我想找到一种优雅的方式,也许是一行正则表达式来代替它,然后再渲染我的视图。我宁愿不使用任何额外的库。

    感谢您的帮助!

    1 回复  |  直到 7 年前
        1
  •  0
  •   mrgreenfrog    7 年前

    我似乎无论如何都成功了。 它并没有我想要的那么漂亮,但它很管用,从技术上讲,它是一个单行正则表达式。

      t = "00:05";
      t2 = "01:00";
      t3 = "12:10";
      t4 = "02:02";
    
      const replaceTime = (myString) => {
        myString = myString.replace(/0?([1-9]{0,}[0-9]):0?([1-9]{0,}[0-9])/g, '$1h $2m').replace(/\s0m/g, '').replace(/0h\s/g, '');
        return myString;
      }
    
      console.log(replaceTime(t));
      console.log(replaceTime(t2));
      console.log(replaceTime(t3));
      console.log(replaceTime(t4));
    

    返回:

    5m
    1h
    12h 10m
    2h 2m