如何在不丢失尾随零的情况下将字符串转换为数字
var string1 = '02';
Number(string1); // == 2 - Default output
Number(string1); // == 02 - My requirement
我想要的原因是:我将日期作为值传递给日期HTML元素。格式为yyyy-MM-dd
,月份和日期格式为两位数,如果我将日期(在我的情况下为字符串)转换为数字,则删除尾随零。
答案 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;
答案 1 :(得分:1)
如评论所述,您可以使用("00" + num).slice(-2)
。
您可以尝试这样的事情:
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;