在我的代码中,我使用了
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var mins = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var sec = Math.floor((distance % (1000 * 60)) / 1000);
获取日,小时,分钟和秒。我想在小于10时向数字添加前导0.我试过
$(".mins").html('0'+ mins).slice(-2);
但是输出是三位数(例如30-> 030)。 但是当它是两位数时我不想要前导0,只有当它是一位数时才添加它。
我该如何纠正?
答案 0 :(得分:0)
jQuery也有一个slice()方法,你正在切割jQuery对象而不是字符串。请注意,您已关闭html()
并在其后链接slice()
更改为:
$(".mins").text( ('0'+ mins).slice(-2) );
或者为了可读性:
mins = ('0'+ mins).slice(-2);
$(".mins").text(mins);
答案 1 :(得分:0)
在ECMAScript 2017的Javascript中,String只有一个函数:
String.padStart(targetLength,padString)
targetLength
是您想要字符串的长度,而padString
是您要填充的字符。
那说mins
的类型是数字,所以你必须转换为String来访问这个函数......简单的方法是mins.toString()
但这是因为从你的特殊情况我们知道肯定分钟是数字(或NaN)类型,如果其他人阅读的情况类似但不同,你可以随时(mins+"")
确保强制执行字符串(仍然不能防止NaN)。< / p>
现在实际使用:
// padStart of 2 will be 2 min...
$(".mins").html(mins.toString().padStart(2, "0")); // 30, 03, 303, etc...
现在,如果你不能依靠知道你的2017年好消息!有polyfill! Polyfills基本上检查当前的JavaScript版本是否知道函数,如果没有写入它们。
由MDN Web Docs提供
你需要第二个,但第二个需要第一个......
答案 2 :(得分:0)
以下是我的解决方案
$(".mins").text( ('0'+ mins).slice(-2) ); //add leading 0 when minute is < 10.
但这种方法几天都不起作用。
因此,为了添加前导日,我使用$(".days").text(days.toString().padStart(2, "0"));
当天为三位或两位数时,输出为“原样”。当白天是&lt; 10,它增加了一个前导0。
所以我决定在所有的日子,小时,分钟和秒中使用.toString().padStart(2, "0"));
。
感谢那些帮助我的人!