【问题标题】:Remove leading zeros from time format从时间格式中删除前导零
【发布时间】:2017-08-10 06:43:45
【问题描述】:

我收到了'HH:mm:ss' 格式的字符串。我想删除前导零,但始终保留最后四个字符,例如m:ss,即使m 是零。我正在格式化音频时长。

例子:

00:03:15 => 3:15
10:10:10 => 10:10:10
00:00:00 => 0:00
04:00:00 => 4:00:00
00:42:32 => 42:32
00:00:18 => 0:18
00:00:08 => 0:08

【问题讨论】:

    标签: javascript regex time


    【解决方案1】:

    你可以使用这个替换:

    var result = yourstr.replace(/^(?:00:)?0?/, '');
    

    demo

    或更好:

    var result = yourstr.replace(/^0(?:0:0?)?/, '');
    

    demo


    要处理 Matt 示例(参见 cmets),您可以将模式更改为:

    ^[0:]+(?=\d[\d:]{3})
    

    【讨论】:

    • 0:00:00返回:00:00
    • @Matt: 来自问题:“我收到一个格式为'HH:mm:ss'的字符串”
    • 我的错,很公平
    • @Matt:别担心,你给了我改进答案的机会。
    【解决方案2】:

    如果您使用 1 小时而不是 2 小时,您将不会得到前导 0。

    h:mm:ss

    【讨论】:

    • 在 10:00 这样的多位数小时内是否仍然有效
    • @NickGallimore 是的!
    • 大声笑和我们上面的所有球拍,呵呵(谢谢)
    • 24小时不工作。
    【解决方案3】:

    另一种选择是使用 moment.js 库。

    这支持诸如

    之类的格式
    var now = moment('1-1-1981 2:44:22').format('h:mm:ss');
    alert(now);
    

    http://jsfiddle.net/8yqxh5mo/

    【讨论】:

      【解决方案4】:

      你可以这样做:

      var tc =['00:03:15', '10:10:10','00:00:00','04:00:00','00:42:32','00:00:18','00:00:08'];
      
      tc.forEach(function(t) {
          var y = t.split(":");
          y[0] = y[0].replace(/^[0]+/g, '');
          if(y[0] === '') {
              y[1] = y[1].replace(/^0/g, ''); 
          }
          var r = y.filter(function(p) {return p!=='';}).join(':');
          console.log(r);
      });

      将时间分成 3 部分。从第一部分中删除前导零,如果第一部分为空,则从第二部分中删除前导零,否则保留它。然后加入所有这些丢弃空字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-06
        • 1970-01-01
        • 2018-06-16
        • 1970-01-01
        相关资源
        最近更新 更多