10

我创建了一个时钟,放置在我网站的标题中。分钟 < 10 的时间不显示零。例如,如果时间是 10:50,它只会显示 10:5,我找到了一个解决方案,但不确定如何实现它。另外如果有更好的方法请分享。

 var current;
window.onload = function () {

    current = new Date();

    document.getElementById("clock").innerHTML = current.getHours() + ":" +      current.getMinutes(); 

这就是我需要的

                if (minutes < 10)
                minutes = "0" + minutes

这是我时钟的容器

    <span id="clock">&nbsp</span>
4

5 回答 5

38

您可以只抓取时间字符串的前 5 个字符。

(new Date()).toTimeString().substr(0,5)
于 2013-01-25T20:12:33.293 回答
15

由于您将来可能会遇到同样的问题,因此我建议您为 Javascript 选择一个最喜欢的字符串格式化函数。

一些例子:

然后你可以做一些类似"{0:00}:{1:00}".format(current.getHours(), current.getMinutes())甚至更好的事情,

var d = new Date();
var s = d.format("hh:mm:ss tt");
// Result: "02:28:06 PM"
于 2013-01-25T20:08:36.407 回答
14

你的问题是什么?

var minutes = (current.getMinutes() < 10? '0' : '') + current.getMinutes();

因为你会在几个小时内遇到同样的问题,所以将它包装在一个小的实用函数中:

function pad(var value) {
    if(value < 10) {
        return '0' + value;
    } else {
        return value;
    }
}

后来简单地说:

pad(current.getHours()) + ":" + pad(current.getMinutes())
于 2013-01-25T19:56:35.343 回答
11

我喜欢这种做事方式...... 迄今为止,Javascript 添加前导零

const d = new Date();
const date = (`0${d.getMinutes()}`).slice(-2);
console.log(date); // 09;

2019 更新: 但我现在更喜欢

const d = new Date();
const date = String(d.getMinutes()).padStart(2, '0');
console.log(date); // 09;
于 2017-05-29T14:20:15.360 回答
1

我试过这种方式。它并不简短,但它有效。

var dt = new Date();
if (parseInt(dt.getMinutes()) < 10) {minutes = "0" + dt.getMinutes();} else minutes = dt.getMinutes();
if (parseInt(dt.getSeconds()) < 10) {seconds = "0" + dt.getSeconds();} else seconds = dt.getSeconds();

var time = dt.getHours() + ":" + minutes + ":" + seconds;
document.write("Now is:" + time);

//Result: Now is: 22:47:00

我希望它会有用

于 2015-03-26T21:56:47.953 回答