在javascript中将String转换为Number时如何保留尾随零

时间:2017-02-01 09:03:37

标签: javascript

如何在不丢失尾随零的情况下将字符串转换为数字

var string1 = '02';
Number(string1); // == 2 - Default output
Number(string1); // == 02 - My requirement

我想要的原因是:我将日期作为值传递给日期HTML元素。格式为yyyy-MM-dd,月份和日期格式为两位数,如果我将日期(在我的情况下为字符串)转换为数字,则删除尾随零。

2 个答案:

答案 0 :(得分:2)

你不能。 Number是一个Number期。您可以使辅助对象具有数字和数字左键盘方法。类似的东西:



document.querySelector("button").addEventListener("click", setDateValueExample);
var num = XNumber(3);
var result = {
  el: document.querySelector("#result"),
  log(str) {
    this.el.textContent += str + '\n';
  }
}
// XNumber usage example
result.log('XNumber(54).lpad(1000000): ' + XNumber(54).lpad(1000000));

// Datefield value from date field formatting example
var d = new Date(document.querySelector("#somedate").value);
result.log('Date formatted: ' +
  [XNumber(d.getMonth()+1).lpad(),
   XNumber(d.getDate()).lpad(),
   d.getFullYear()].join('-'));

// Set date field value from string example
function setDateValueExample() {
  document.querySelector("#somedate").value =
    document.querySelector("button").getAttribute("data-dateString")
      .split("/")
      .reverse()
      .map(function (v) {
        return XNumber(v).lpad()
      })
      .join('-');
}

// The actual Number helper
function XNumber(num) {
  return {
    num: +num,
    lpad (base) {
      base = base || 10;
      var  len = (String(base).length - String(this.num).length)+1;
      return len > 0 ? new Array(len).join('0')+this.num : this.num;
    }
  };
}

<input type="date" id="somedate" value="2017-02-01"/> a date
<button data-dateString="2/3/2017">Set value from string "2/3/2017"</button>
<pre id="result"></pre>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如评论所述,您可以使用("00" + num).slice(-2)

您可以尝试这样的事情:

&#13;
&#13;
function getParsedValue(date) {
  var d = date;
  if (typeof d === "string") {
    d = new Date(date);
  }
  return [d.getFullYear(), getDoubleDigitString(d.getMonth() + 1), getDoubleDigitString(d.getDate())].join("-")
}

function getDoubleDigitString(num) {
  return ("00" + num).slice(-2);
}

var date = new Date();
document.getElementById('txtDate1').value = getParsedValue(date)

document.getElementById('txtDate2').value = getParsedValue("1999/1/2")
&#13;
<input type="date" id="txtDate1" />
<input type="date" id="txtDate2" />
&#13;
&#13;
&#13;