Javascript日期:如果需要,确保getMinutes(),getHours(),getSeconds()将0置于前面

时间:2010-07-22 22:03:21

标签: javascript date

寻找一种创造性的方法来确保来自javascript Date对象的getHours,getMinutes和getSeconds()方法的值返回"06"而不是6(例如)。有什么参数我不知道吗?显然,如果需要的话,我可以编写一个函数来检查长度并预先设置"0",但我认为可能会有更精简的东西。

感谢。

3 个答案:

答案 0 :(得分:54)

与@ jdmichal的解决方案类似,发布是因为我更喜欢更短的东西:

function pad(n) { return ("0" + n).slice(-2); }

pad(6); // -> "06"
pad(12); // -> "12"

您可以将此方法添加到Date.prototype,而不是将单个方法添加到Number.prototype

Number.prototype.pad = function (len) {
    return (new Array(len+1).join("0") + this).slice(-len);
}

// Now .pad() is callable on any number, including those returned by
var time = date.getHours().pad(2) + ":"
         + date.getMinutes().pad(2) + ":"
         + date.getSeconds().pad(2);

答案 1 :(得分:30)

更新:ECMAScript 2017(ECMA-262)

已经添加了

padStart来填充另一个字符串的字符串的开头,其中第一个值是它应该的长度,第二个值是用它填充它的内容。

例如:

let d = new Date()
let h = `${d.getHours()}`.padStart(2, '0')
let m = `${d.getMinutes()}`.padStart(2, '0')
let s = `${d.getSeconds()}`.padStart(2, '0')

let displayDate = h + ":" + m + ":" + s
// Possible Output: 09:01:34

2010年前ECMAScript

据我所知,没有。我一直这样做,将日期转换为XML dateTime格式。

同样重要的是要注意,您列出的那些方法会返回一个数字,而不是字符串。

您当然可以通过修改Date.prototype来添加这些内容。

Date.prototype.getHoursTwoDigits = function()
{
    var retval = this.getHours();
    if (retval < 10)
    {
        return ("0" + retval.toString());
    }
    else
    {
        return retval.toString();
    }
}

var date = new Date();
date.getHoursTwoDigits();

答案 2 :(得分:12)

function pad2(number) {

     return (number < 10 ? '0' : '') + number

}

document.write(pad2(2) + '<br />');
document.write(pad2(10) + '<br />');

输出:

02

10