How do I format a Javascript Date?

后端 未结 11 1515
没有蜡笔的小新
没有蜡笔的小新 2020-12-03 07:55

How do I format this date so that the alert displays the date in MM/dd/yyyy format?



        
11条回答
  •  温柔的废话
    2020-12-03 08:52

    You prototype a method so you never have to do this irritating task again:

    Date.prototype.toFormattedString = function (f)
    {
        var nm = this.getMonthName();
        var nd = this.getDayName();
        f = f.replace(/yyyy/g, this.getFullYear());
        f = f.replace(/yy/g, String(this.getFullYear()).substr(2,2));
        f = f.replace(/MMM/g, nm.substr(0,3).toUpperCase());
        f = f.replace(/Mmm/g, nm.substr(0,3));
        f = f.replace(/MM\*/g, nm.toUpperCase());
        f = f.replace(/Mm\*/g, nm);
        f = f.replace(/mm/g, String(this.getMonth()+1).padLeft('0',2));
        f = f.replace(/DDD/g, nd.substr(0,3).toUpperCase());
        f = f.replace(/Ddd/g, nd.substr(0,3));
        f = f.replace(/DD\*/g, nd.toUpperCase());
        f = f.replace(/Dd\*/g, nd);
        f = f.replace(/dd/g, String(this.getDate()).padLeft('0',2));
        f = f.replace(/d\*/g, this.getDate());
        return f;
    };
    

    (and yes you could chain those replaces, but it's not here for readability before anyone asks)


    As requested, additional prototypes to support the above snippet.

    Date.prototype.getMonthName = function ()
    {
        return this.toLocaleString().replace(/[^a-z]/gi,'');
    };
    
    //n.b. this is sooo not i18n safe :)
    Date.prototype.getDayName = function ()
    {
        switch(this.getDay())
        {
            case 0: return 'Sunday';
            case 1: return 'Monday';
            case 2: return 'Tuesday';
            case 3: return 'Wednesday';
            case 4: return 'Thursday';
            case 5: return 'Friday';
            case 6: return 'Saturday';
        }
    };
    
    String.prototype.padLeft = function (value, size) 
    {
        var x = this;
        while (x.length < size) {x = value + x;}
        return x;
    };
    

    and usage example:

    alert((new Date()).toFormattedString('dd Mmm, yyyy'));
    

提交回复
热议问题