我希望我的倒数计时器显示两位数,例如“ 53:00”而不是“ 53:0”。不知道这里出了什么问题?谢谢!
function convertSeconds(s) {
var min = Math.floor(s / 60);
var sec = s % 60;
return nf(min, 2) + ':' + nf(sec, 2);
}
答案 0 :(得分:2)
要填充零,您可以
function nf(num, places) {
var s = '0' + num;
return s.slice(places * -1);
}
function convertSeconds(s) {
var min = Math.floor(s / 60);
var sec = s % 60;
return nf(min, 2) + ':' + nf(sec, 2);
}
应该为您带来想要的东西
答案 1 :(得分:2)
您可以使用padStart()
来确保字符串是特定长度。如果不是,它将用您想要的任何东西填充它。在这种情况下,0
:
const nf = (n, c) => n.toString().padStart(c, '0');
function convertSeconds(s) {
var min = Math.floor(s / 60);
var sec = (s % 60)
return nf(min, 2) + ':' + nf(sec, 2);
}
console.log(convertSeconds(64))
console.log(convertSeconds(119))
不确定是否要填补分钟数。
还有Intl.NumberFormat()
,它有一个用于选择最小数字的选项(尽管这似乎有点过头):
console.log(new Intl.NumberFormat('en-US', { minimumIntegerDigits: 2}).format(2));
console.log(new Intl.NumberFormat('en-US', { minimumIntegerDigits: 2}).format(59));
答案 2 :(得分:1)
nf()
函数应如下所示:
function nf(num){
if(num < 10){
return "0"+num;
}
return num;
}
console.log(nf(7));
// 07
console.log(nf(11));
// 11
答案 3 :(得分:1)
如果用nf()
表示将Number
格式化为给定数字string
的函数,则可以是它的实现:
function nf(number, digits) {
var res = number.toString();
while (res.length < digits) {
res = "0" + res;
}
return res;
}
演示:
function convertSeconds(s) {
var min = Math.floor(s / 60);
var sec = s % 60;
return nf(min, 2) + ':' + nf(sec, 2);
}
function nf(number, digits) {
var res = number.toString();
while (res.length < digits) {
res = "0" + res;
}
return res;
}
console.log(nf(4,2));