Javascript date - Leading 0 for days and months where applicable

前端 未结 9 2025
情话喂你
情话喂你 2020-12-15 05:07

Is there a clean way of adding a 0 in front of the day or month when the day or month is less than 10:

var myDate = new Date();
var prettyDate =(myDate.getFu         


        
相关标签:
9条回答
  • 2020-12-15 05:55

    No, there is no nice way to do it. You have to resort to something like:

    var myDate = new Date();
    
    var year = myDate.getFullYear();
    
    var month = myDate.getMonth() + 1;
    if(month <= 9)
        month = '0'+month;
    
    var day= myDate.getDate();
    if(day <= 9)
        day = '0'+day;
    
    var prettyDate = year +'-'+ month +'-'+ day;
    
    0 讨论(0)
  • 2020-12-15 05:56

    The easiest way to do this is to prepend a zero and then use .slice(-2). With this function you always return the last 2 characters of a string.

    var month = 8;

    var monthWithLeadingZeros = ('0' + month).slice(-2);

    Checkout this example: http://codepen.io/Shven/pen/vLgQMQ?editors=101

    0 讨论(0)
  • 2020-12-15 06:01

    Yes, get String.js by Rumata and then use:

    '%04d-%02d-%02d'.sprintf(myDate.getFullYear(),
                             myDate.getMonth() + 1,
                             myDate.getDate());
    

    NB: don't forget the + 1 on the month field. The Date object's month field starts from zero, not one!

    If you don't want to use an extra library, a trivial inline function will do the job of adding the leading zeroes:

    function date2str(d) {
        function fix2(n) {
            return (n < 10) ? '0' + n : n;
        }
        return d.getFullYear() + '-' +
               fix2(d.getMonth() + 1) + '-' +
               fix2(d.getDate());
     }
    

    or even add it to the Date prototype:

    Date.prototype.ISO8601date = function() {
        function fix2(n) {
            return (n < 10) ? '0' + n : n;
        }
        return this.getFullYear() + '-' +
               fix2(this.getMonth() + 1) + '-' +
               fix2(this.getDate());
     }
    

    usage (see http://jsfiddle.net/alnitak/M5S5u/):

     var d = new Date();
     var s = d.ISO8601date();
    
    0 讨论(0)
提交回复
热议问题