Javascript日期:确保getMinutes()、getHours()、getSeconds()在必要时将0放在前面

Javascript日期:确保getMinutes()、getHours()、getSeconds()在必要时将0放在前面,javascript,date,Javascript,Date,正在寻找一种创造性的方法来确保来自javascript日期对象的getHours、getMinutes和getSeconds()方法的值返回“06”,而不是6(例如)。有我不知道的参数吗?显然,我可以编写一个函数,通过检查长度并在必要时预先添加一个“0”,来实现这一点,但我认为可能还有比这更精简的功能 谢谢。更新:ECMAScript 2017(ECMA-262) 已添加为用另一个字符串填充字符串的开头,其中第一个值是该字符串应具有的长度,第二个值是要填充的内容 例如: let d = new

正在寻找一种创造性的方法来确保来自javascript日期对象的getHours、getMinutes和getSeconds()方法的值返回
“06”
,而不是
6
(例如)。有我不知道的参数吗?显然,我可以编写一个函数,通过检查长度并在必要时预先添加一个
“0”
,来实现这一点,但我认为可能还有比这更精简的功能

谢谢。

更新:ECMAScript 2017(ECMA-262) 已添加为用另一个字符串填充字符串的开头,其中第一个值是该字符串应具有的长度,第二个值是要填充的内容

例如:

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

2017年ECMAScript之前 据我所知,没有。为了将日期转换为XML日期时间格式,我一直在这样做

还需要注意的是,列出的那些方法返回的是数字,而不是字符串

当然,您可以通过修改
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();
Date.prototype.getHoursTwoDigits=函数()
{
var retval=this.getHours();
如果(返回值<10)
{
返回(“0”+retval.toString());
}
其他的
{
返回retval.toString();
}
}
变量日期=新日期();
date.getHoursTwoDigits();

类似于@jdmichal的解决方案,因为我更喜欢短一点的:

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

pad(6); // -> "06"
pad(12); // -> "12"
您可以将此方法添加到
Number.prototype
,而不是将单个方法添加到
Date.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);
功能pad2(编号){
返回(编号<10?'0':'')+编号
}
书写(pad2(2)+'
'; 书写(pad2(10)+'
';
输出:

02


10确实如此。只是想用一些东西来描绘价值观,引用就是。谢谢你的澄清,你的年轻的短吻笛鲷和你的花式切片!非常聪明,谢谢你的回答!令人惊叹的!我现在正在初始化输入@type=“time”元素,如下所示:timeEl.value=(“0”+now.getHours()).slice(-2)+:“+(“0”+now.getMinutes()).slice(-2)+“:00”简单而优雅!我喜欢!
function pad2(number) {

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

}

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