【问题标题】:How to format numbers by prepending 0 to single-digit numbers?如何通过将 0 附加到个位数数字来格式化数字?
【发布时间】:2011-12-23 23:44:00
【问题描述】:

我想将数字格式化为两位数。问题是在传递0–9时引起的,所以我需要将其格式化为00–09。

JavaScript 中有数字格式化程序吗?

【问题讨论】:

标签: javascript number-formatting


【解决方案1】:
("0" + (date.getMonth() + 1)).slice(-2);
("0" + (date.getDay())).slice(-2);

【讨论】:

  • 我认为您的意思是获取月份中的日期:("0" + (date.getDate())).slice(-2);
【解决方案2】:

这是我常用的一个简单的数字填充功能。它允许任何数量的填充。

function leftPad(number, targetLength) {
    var output = number + '';
    while (output.length < targetLength) {
        output = '0' + output;
    }
    return output;
}

例子:

leftPad(1, 2) // 01
leftPad(10, 2) // 10
leftPad(100, 2) // 100
leftPad(1, 3) // 001
leftPad(1, 8) // 00000001

【讨论】:

  • 也有负时间的问题。有解决办法吗?
【解决方案3】:

没有用于 JavaScript 的内置数字格式化程序,但有一些库可以做到这一点:

  1. underscore.string 提供 sprintf 函数(以及许多其他有用的格式化程序)
  2. javascript-sprintf,underscore.string 借用的。

【讨论】:

    【解决方案4】:

    看来你可能有一个字符串,而不是一个数字。使用这个:

    var num = document.getElementById('input').value,
        replacement = num.replace(/^(\d)$/, '0$1');
    document.getElementById('input').value = replacement;
    

    这是一个例子:http://jsfiddle.net/xtgFp/

    【讨论】:

      【解决方案5】:

      如果数字大于 9,则将数字转换为字符串(一致性)。否则,添加一个零。

      function n(n){
          return n > 9 ? "" + n: "0" + n;
      }
      
      n( 9); //Returns "09"
      n(10); //Returns "10"
      n(999);//Returns "999"
      

      【讨论】:

      • 负时间怎么样。 0-1:20:00
      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      相关资源
      最近更新 更多