这是一个奇怪的,但我需要将数字转换为字符串;前面为零的数字。
3.toString()
String(3)
3 + ""
所有这些都会转换为字符串,但03
呢?我需要03
成为"03"
。怎么做到这一点?通过03
执行上述操作,我得到"3"
。基本上,我按日期进行查询,其值可以是"03/15/2017"
根据输入值,我需要将其精确转换为字符串,而不会丢弃0
(如果存在)。
这是我的榜样:
<input type="text" value=03 /> // val
dateString = "03/15/2017"
dateString.indexOf(val) !== -1
答案 0 :(得分:3)
你混淆了字符串和数字。数字具有“规范形式”,例如,当您打印或记录它们时;但是,数字可以有许多不同的格式,所有格式都被解析或转换为相同的数字。
例如,考虑以下数字文字,它们都代表相同的数字(3):
[3, 3.0, 03, +3e0].map(Number); // => [3, 3, 3, 3]
此外,从字符串值中解析这些文字也会产生相同的数字:
['3', '3.0', '03', '+3e0'].map(Number); // => [3, 3, 3, 3]
这意味着如果您想要一个数字与其规范形式不同,那么您必须“格式化”它。在您的示例中,听起来您已经获得了格式化的数字("03"
),所以您可能只想验证字符串以确认它是可接受的数字并按原样使用输入字符串,或者已验证号码的格式化版本。例如:
function validateNumber(s) {
// Parse the input string as a number.
var n = Number(s);
// Validate the number to make sure it's ok based on your business logic.
if (!Number.isInteger(n)) {
throw new Error('invalid integer: ' + s);
}
// Format it to look like we want.
var formatted = String(s);
return ((formatted.length < 2) ? '0' : '') + formatted;
}
validateNumber(3); // => "03"
validateNumber("03"); // => "03"
validateNumber(20); // => "20"
答案 1 :(得分:1)
原来这样做是为了做到这一点:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
console.log("3".padStart(2, "0"));
答案 2 :(得分:0)
如果你使用3,你有一个返回03的函数,我从这个post获得这个函数
console.log(pad(3,2))
function pad(num, size) {
var s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
答案 3 :(得分:0)
试试这个
function appendZero(val){
val = val.toString();
return val.length == 1 ? "0"+val : val
}
appendZero(3) // '03'
答案 4 :(得分:0)
您可以使用if
条件检查该数字是否小于10.
function addZero(n) {
return (n < 10) ? ("0" + n) : n.toString();
}
console.log(addZero(7))
答案 5 :(得分:0)
考虑到您的示例,这可能对您有用:
var val = 3;
dateString = "03/15/2017";
var indexOfVal = dateString.indexOf(val.toString().padStart(2,'0'));
console.log(indexOfVal); // 0
//Another approach could be
var datePartsArray = dateString.split("/");
var month = datePartsArray[0]; //"03"
var day = datePartsArray[1]; //"15"
var year = datePartsArray[2]; //"2017"
if(month===val.toString().padStart(2,'0')){
console.log(true);}
else{
console.log(false);
}
答案 6 :(得分:0)
这也是我通常用于连接日期字符串的简短版本:
mydate=3;
mystring = ("0"+3).slice(-2);
console.log(mystring);
答案 7 :(得分:-3)
也许这会有所帮助:
var today = new Date();
var d = today.getDate();
var m = today.getMonth() + 1;
var y = today.getFullYear();
var shortDate = m.toString().padStart(2,'0') + '/' +
d.toString().padStart(2,'0') + '/' + y.toString();
console.log(shortDate);
在第三行中,我向today.getMonth()添加1,因为JavaScript计算一年中从0到11的月数。
您可以找到有关JavaScript日期方法here
的更多信息