【问题标题】:How to create date in YYYYMMDDHHMMSS format using javascript? [closed]如何使用 javascript 创建 YYYYMMDDHHMMSS 格式的日期? [关闭]
【发布时间】:2013-10-18 11:20:04
【问题描述】:

如何使用 JavaScript 创建 YYYYMMDDHHMMSS 格式的日期?例如,我想获取日期为 20131018064838。

【问题讨论】:

  • 我会使用我建议的库 here 无论如何,如果你也分享你的实际代码,它会有很大帮助。
  • (new Date()).toISOString().replace(/[^0-9]/g, "").slice(0, -3)
  • @MBS 你的答案是最恰当的
  • 另一种解决方案:dt=new Date().toISOString().split('.')[0].replace(/[^\d]/gi,'');dt 设置为,(例如):20210809154700
  • new Date.toISOString().replace(/(\.\d{3})|[^\d]/g,'')

标签: javascript


【解决方案1】:
var date = new Date();

alert( date.getFullYear() + ("0" + (date.getMonth() + 1)).slice(-2) + ("0" + date.getDate()).slice(-2) + ("0" + date.getHours() ).slice(-2) + ("0" + date.getMinutes()).slice(-2) + ("0" + date.getSeconds()).slice(-2) );

编辑

function pad2(n) { return n < 10 ? '0' + n : n }

var date = new Date();
    
alert( date.getFullYear().toString() + pad2(date.getMonth() + 1) + pad2( date.getDate()) + pad2( date.getHours() ) + pad2( date.getMinutes() ) + pad2( date.getSeconds() ) );

【讨论】:

  • 就像('0' + n).slice(-2) hack 一样简洁,恕我直言,它的可读性不是很好,并且使用一点 pad2 辅助函数可以更好地服务于 OP,例如function pad2(n) { return n &lt; 10 ? '0' + n : n }
  • 附注为什么 +1 getHours 结果?!
  • 在第 2 行进行到一半时,您开始使用 this 而不是 date
  • @Butt4cak3 根据建议进行了更改
  • @gurvinder372 恭喜 - 您现在有了唯一正确(独立)的答案!
【解决方案2】:

这是我将YYYYMMDDHHMMSS() 函数添加到任何Date 对象的(ES5 安全)方法。

在旧版浏览器上,要么填充 Object.defineProperty,要么直接将内部函数添加到 Date.prototype

Object.defineProperty(Date.prototype, 'YYYYMMDDHHMMSS', {
    value: function() {
        function pad2(n) {  // always returns a string
            return (n < 10 ? '0' : '') + n;
        }

        return this.getFullYear() +
               pad2(this.getMonth() + 1) + 
               pad2(this.getDate()) +
               pad2(this.getHours()) +
               pad2(this.getMinutes()) +
               pad2(this.getSeconds());
    }
});

【讨论】:

  • 可能有点主观,但是(假设时区是零 UTC 偏移量很好,)我认为new Date().toISOString().slice(-24).replace(/\D/g,'').slice(0, 14); 更干净,因为它不涉及修补零填充或修正月份数。跨度>
【解决方案3】:

请尝试使用原型方法如下。

<script type="text/javascript">

    Date.prototype.YYYYMMDDHHMMSS = function () {
        var yyyy = this.getFullYear().toString();
        var MM = pad(this.getMonth() + 1,2);
        var dd = pad(this.getDate(), 2);
        var hh = pad(this.getHours(), 2);
        var mm = pad(this.getMinutes(), 2)
        var ss = pad(this.getSeconds(), 2)

        return yyyy + MM + dd+  hh + mm + ss;
    };

    function getDate() {
        d = new Date();
        alert(d.YYYYMMDDHHMMSS());
    }

    function pad(number, length) {
        var str = '' + number;
        while (str.length < length) {
            str = '0' + str;
        }
        return str;
    }
</script>

【讨论】:

  • 这是一种新颖(但效率低下)的零填充数字方式...您还省略了对时间字段进行零填充。
  • 是的,这是真的。我已经更新了答案。
  • 越来越好,但在这种情况下,无需填充超过两位数,然后您可以将 pad2 (根据使用它的其他答案)设为 Date.prototype.YYYYMMDDHHMMSS 中的内部函数以避免污染全局命名空间。
  • 感谢代码 sn-ps,我为调试目的进行了更多定制。 jsfiddle.net/trustfarm/nvvzgax1/4
猜你喜欢
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 2017-06-02
相关资源
最近更新 更多