加“0”,如果时钟有一个数字(Adding “0” if clock have one digit)

2019-07-31 09:01发布

我有一些时钟脚本。 一切都很好,它的工作完美,但...我有一个问题。 如果在时钟设定一个数字小时或分钟等1:5时钟不之前加入“0”位。 这是什么我心中已经完成,但它简化版,工作。 u能帮助我,很多THX?

window.setInterval(function update_clock() {
    var currentTime = new Date();
    var currentHours = currentTime.getHours();
    var currentMinutes = currentTime.getMinutes();
    $.ajax({
        success: function (clock) {
            document.getElementById("hour").firstChild.nodeValue = currentHours;
            document.getElementById("minutes").firstChild.nodeValue = currentMinutes;
            if (currentMinutes.length == 1) {
                currentMinutes = "0" + currentMinutes;
            }
        }
    });
}, 999);

Answer 1:

currentMinutes是一个数字,所以它不具备length属性。 此外,还必须检查length之前设置currentMinutesminutes元素。

就像是:

var currentHours = currentTime.getHours();
var currentMinutes = currentTime.getMinutes();

$.ajax({
    success: function (clock) {
        if (currentMinutes.toString().length == 1) {
            currentMinutes = "0" + currentMinutes;
        }

        document.getElementById("hour").firstChild.nodeValue = currentHours;
        document.getElementById("minutes").firstChild.nodeValue = currentMinutes;
    }
});


Answer 2:

您可以使用.slice提取一个字符串的一部分。 传递一个负数它,才能从字符串的结尾切片。

因此,以下是可能的,而且非常简单:

('0'+currentMinutes).slice(-2)

与串联'0'可确保操作的目标永远是一个字符串。 ('0'+currentMinutes)将产生一个2或3个字母串( “07”或“017”,例如)。 切片最后两个字符关闭该字符串会给你一个填充0两位数字。

请注意,上面会产生“00”,如果currentMinutes100的,所以假设你知道你将要使用的值。

这可以提取到更多的东西可重复使用:

Number.prototype.zeroPad = function() {
   return ('0'+this).slice(-2);
};

这将使你写:

currentMinutes.zeroPad();

你也可以将填充变量的长度:

Number.prototype.zeroPad = function(length) {
   length = length || 2; // defaults to 2 if no parameter is passed
   return (new Array(length).join('0')+this).slice(length*-1);
};

这可以被称为:

currentMinutes.zeroPad(); // e.g. "07" or "17"
currentMinutes.zeroPad(3); // e.g. "007" or "017"

需要注意的是,虽然currentMinutes.zeroPad()将工作, 7.zeroPad()不会。



Answer 3:

currentMinutes不会有一个length属性,因为它是一个Number ,而不是一个String

你可能会迫使它是一个String

if ((currentMinutes+'').length == 1) {
     currentMinutes = "0" + currentMinutes;
}

但是 ,因为你有一个Number ,你应该让你的病情......

if (currentMinutes < 10) {
     currentMinutes = "0" + currentMinutes;
}

如果你是特别疯狂,你可以做...

var hoursMinutes = ((new Date)+"").match(/\d+:\d+(?=:)/)[0].split(":");


Answer 4:

你也可以检查的sprintf()的JavaScript。

你可以用简单的东西如去:

sprintf("%02d:%02d", currentHours, currentMinutes);

使用接受的格式让你有超过你的输出更多的控制,当你需要的功能。



Answer 5:

基于其他awnsers,我创建了这个代码行:

 var now = new Date(); var dd = now.getDate(); var mm = now.getMonth()+1; var y = now.getFullYear(); var h = now.getHours(); var m = now.getMinutes(); function aZero(n) { return n.toString().length == 1 ? n = '0' + n: n; } document.getElementById("out").innerHTML = aZero(dd) + "-" + aZero(mm) + "-" + y + " - " + aZero(h) + ":" + aZero(m); 
 <div id="out">my time :D</div> 

铜下一次。



Answer 6:

尝试使用('0' + currentTime.getHours()).slice(-2)

更新你的问题 -

window.setInterval(function update_clock() {
    var currentTime = new Date();
    var currentHours = ('0' + currentTime.getHours()).slice(-2);
    var currentMinutes = ('0' + currentTime.getMinutes()).slice(-2);
    $.ajax({
        success: function (clock) {
            document.getElementById("hour").firstChild.nodeValue = currentHours;
            document.getElementById("minutes").firstChild.nodeValue = currentMinutes;
            if (currentMinutes.length == 1) {
                currentMinutes = "0" + currentMinutes;
            }
        }
    });
}, 999);


Answer 7:

在android系统(建立)

String time=String.format("%02d:%02d",hourOfDay,minute);

在javascript使用(sprintf.js)

int i = 1;
string s = sprintf("%02d", i);
document.write(s); // Prints "01"

sprintf.js: http://www.diveintojavascript.com/projects/javascript-sprintf



文章来源: Adding “0” if clock have one digit