【问题标题】:Javascript Date: Ensure getMinutes(), getHours(), getSeconds() puts 0 in front if necessaryJavascript 日期:确保 getMinutes()、getHours()、getSeconds() 在必要时将 0 放在前面
【发布时间】:2010-07-22 22:03:21
【问题描述】:

寻找一种创造性的方法来确保来自 javascript Date 对象的 getHours、getMinutes 和 getSeconds() 方法的值返回 "06" 而不是 6(例如)。有什么我不知道的参数吗?显然,我可以编写一个函数来检查长度并在需要时在前面加上 "0",但我认为可能有比这更精简的方法。

谢谢。

【问题讨论】:

    标签: javascript date


    【解决方案1】:
    function pad2(number) {
    
         return (number < 10 ? '0' : '') + number
    
    }
    
    document.write(pad2(2) + '<br />');
    document.write(pad2(10) + '<br />');
    

    输出:

    02

    10

    【讨论】:

    • 简洁优雅!我喜欢!
    【解决方案2】:

    更新: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
    

    Pre-ECMAScript 2017

    据我所知,没有。我一直这样做是为了将日期转换为 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();
    

    【讨论】:

    • 确实如此。只是想用一些东西来描述价值,而引号就是它。感谢您的澄清
    【解决方案3】:

    类似于@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);
    

    【讨论】:

    • 你们这些年轻的鲷鱼和你们喜欢的切片!
    • 非常聪明,imo。感谢您的回答!
    • 太棒了!我现在像这样初始化我的输入@type="time" 元素:timeEl.value = ("0"+now.getHours()).slice(-2) + ":" + ("0"+now. getMinutes()).slice(-2) + ":00"
    猜你喜欢
    • 2011-12-30
    • 2023-03-09
    • 2016-12-24
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多