new Date或者时间戳 如何快速地转换成'YYYYMMDDhhmmss'格式?

例如: new Date() ====> "20171024190000"
有什么一些简便的方法? 谢谢

阅读 26.6k
3 个回答

使用 date-dns 库,下面的代码可以在这个页面的控制台中尝试

dateFns.format(new Date(), "YYYYMMDDhhmmss");

使用 Moment

moment(new Date()).format("YYYYMMDDhhmmss");
// 如果是当前时间可以简化为
moment().format("YYYYMMDDhhmmss");

使用一段曾经流行的格式化代码

Date.prototype.format = function (format) {
    //eg:format="yyyy-MM-dd hh:mm:ss";

    if (!format) {
        format = "yyyy-MM-dd hh:mm:ss";
    }

    var o = {
        "M+": this.getMonth() + 1,  // month
        "d+": this.getDate(),       // day
        "H+": this.getHours(),      // hour
        "h+": this.getHours(),      // hour
        "m+": this.getMinutes(),    // minute
        "s+": this.getSeconds(),    // second
        "q+": Math.floor((this.getMonth() + 3) / 3), // quarter
        "S": this.getMilliseconds()
    };

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "")
            .substr(4 - RegExp.$1.length));
    }

    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1
                ? o[k]
                : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }

    return format;
};

示例

new Date().format("yyyyMMddHHmmss")
new Date().toLocaleString().replace(/\/|[\u4e00-\u9fa5]|:|\s+/g,"")

我自己写了一个,没有任何依赖,可配置扩展

function DateFormat() {
    return new DateFormat.prototype.init();
}
DateFormat.fn = DateFormat.prototype = {
    _default: {
        formatFn: function(date, pattern) {
            date = date || 0;
            pattern = pattern.length;
            return pattern === 1 ? date: (Math.pow(10, pattern) + date + '').slice( - pattern);
        },
        formatMap: {
            Y: function(d, f) {
                return DateFormat.fn._default.formatFn(d.getFullYear(), f);
            },
            M: function(d, f) {
                return DateFormat.fn._default.formatFn(d.getMonth() + 1, f);
            },
            D: function(d, f) {
                return DateFormat.fn._default.formatFn(d.getDate(), f);
            },
            h: function(d, f) {
                return DateFormat.fn._default.formatFn(d.getHours(), f);
            },
            m: function(d, f) {
                return DateFormat.fn._default.formatFn(d.getMinutes(), f);
            },
            s: function(d, f) {
                return DateFormat.fn._default.formatFn(d.getSeconds(), f);
            },
            w: function(d, f) {
                return d.getDay();
            }
        },
    },
    // 初始化
    init: function() {
        return this;
    },
    // 配置
    config: function(config) {
        for (var name in config) {
            this._default[name] = config[name];
        }
        return this;
    },
    // 格式化
    format: function(date, pattern) {

        date = new Date(date);

        if (/Invalid/i.test(date + '')) {
            console.error('请提供一个合法日期!');
            return;
        }

        var _self = this,
        char = '';

        return pattern.replace(/([YMDhsmw])\1*/g,
        function(format) {
            char = format.charAt();
            return _self._default.formatMap[char] ? _self._default.formatMap[char](date, format) : '';
        });
    }
};

DateFormat.fn.init.prototype = DateFormat.fn;

var fDate = DateFormat().format(new Date(), 'YYYYMMDDhhmmss');
console.log(fDate);

推荐问题
宣传栏