【问题标题】:Jquery format Number to 4 digits including ColonJquery 格式数字到 4 位数字,包括冒号
【发布时间】:2017-02-17 10:35:27
【问题描述】:

我的脚本接收“时间”值,但格式不同:

    100
    0143
    0015
    1127
    1300
    1230
    2258
    etc...

我正在尝试找到一种方法将其转换为始终为 4 位数字,然后在第二位和第三位数字之间包含一个冒号。例如:

100 becomes 01:00
0143 becomes 01:43
0015 becomes 00:15
2258 becomes 22:58 etc

任何人都可以建议最好的方法吗?

我正在考虑向后工作,去掉最后 2 位数字,在前面加上 : 并在需要时填充剩余的数字。

但这似乎不对!

谢谢

更新..

这似乎有效:

var time = ("0000" + timer).slice(-4)
time = time.substr(0,2) + ":" + time.substr(2);

【问题讨论】:

  • “但这似乎不对” ...为什么?你甚至尝试过吗?应该先尝试一下。然后提出问题以显示未按预期工作的代码
  • 是的,它确实尝试过,但我无法让它工作。我现在已经开始工作了。我会用一个可行的解决方案更新我原来的问题。
  • ("000" + time).slice(-4).substr(0,2) + ":" +("000" + time).slice(-2);

标签: jquery numbers format


【解决方案1】:

我个人认为您的实施没有任何问题。它很简单,并且做它应该做的事情。对于插入冒号字符,您还可以使用 JavaScript 内置的replace() 和正则表达式:

var n = 100;
('0000' + n.toString()).
  slice(-4).
  replace(/(\d{2})(\d{2})$/, '$1:$2');   // => '01:00'

【讨论】:

    【解决方案2】:

    这是一个简单的代码来实现你想要的。但是您已经使用工作代码更新了您的问题,并且显然该代码更好更紧凑。

    // This code is only for demo
    var timeStrings = ["100", "0120", "2354" ];
    timeStrings.forEach(function( timeString ){
      console.log( returnFormattedTime( timeString ) );
    });//forEach()
    
    
    // here is the function that formats these time strings
    function returnFormattedTime( timeString ){
      // pad with zero first if required
      var unformattedTime = timeString;
      var numZeroes = 4 - unformattedTime.length;
      if( numZeroes > 0 ){
        var zeroPadding = "";
        for( var i = 0; i < numZeroes; i++ ){
          zeroPadding += "0";
        }//for()
        unformattedTime = zeroPadding + unformattedTime;
      }//if()
    
      var formattedTime = unformattedTime[0]+unformattedTime[1]+":"+unformattedTime[2]+unformattedTime[3];
      return formattedTime;
      
    }//returnFormattedTime()

    【讨论】:

      猜你喜欢
      • 2013-09-06
      • 2019-06-11
      • 2019-08-28
      • 2015-12-14
      • 2013-02-20
      • 2018-11-23
      • 2013-01-26
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多