Get String in YYYYMMDD format from JS date object?

后端 未结 30 1848
一个人的身影
一个人的身影 2020-11-22 10:47

I\'m trying to use JS to turn a date object into a string in YYYYMMDD format. Is there an easier way than concatenating Date.getYear()

相关标签:
30条回答
  • 2020-11-22 11:34

    This code is fix to Pierre Guilbert's answer:

    (it works even after 10000 years)

    YYYYMMDD=new Date().toISOString().slice(0,new Date().toISOString().indexOf("T")).replace(/-/g,"")
    
    0 讨论(0)
  • 2020-11-22 11:37

    If using AngularJs (up to 1.5) you can use the date filter:

    var formattedDate = $filter('date')(myDate, 'yyyyMMdd')
    
    0 讨论(0)
  • 2020-11-22 11:38

    I usually use the code below when I need to do this.

    var date = new Date($.now());
    var dateString = (date.getFullYear() + '-'
        + ('0' + (date.getMonth() + 1)).slice(-2)
        + '-' + ('0' + (date.getDate())).slice(-2));
    console.log(dateString); //Will print "2015-09-18" when this comment was written
    

    To explain, .slice(-2) gives us the last two characters of the string.

    So no matter what, we can add "0" to the day or month, and just ask for the last two since those are always the two we want.

    So if the MyDate.getMonth() returns 9, it will be:

    ("0" + "9") // Giving us "09"
    

    so adding .slice(-2) on that gives us the last two characters which is:

    ("0" + "9").slice(-2)
    
    "09"
    

    But if date.getMonth() returns 10, it will be:

    ("0" + "10") // Giving us "010"
    

    so adding .slice(-2) gives us the last two characters, or:

    ("0" + "10").slice(-2)
    
    "10"
    
    0 讨论(0)
  • 2020-11-22 11:39

    How about Day.js?

    It's only 2KB, and you can also dayjs().format('YYYY-MM-DD').

    https://github.com/iamkun/dayjs

    0 讨论(0)
  • 2020-11-22 11:41

    Working from @o-o's answer this will give you back the string of the date according to a format string. You can easily add a 2 digit year regex for the year & milliseconds and the such if you need them.

    Date.prototype.getFromFormat = function(format) {
        var yyyy = this.getFullYear().toString();
        format = format.replace(/yyyy/g, yyyy)
        var mm = (this.getMonth()+1).toString(); 
        format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
        var dd  = this.getDate().toString();
        format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
        var hh = this.getHours().toString();
        format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
        var ii = this.getMinutes().toString();
        format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
        var ss  = this.getSeconds().toString();
        format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
        return format;
    };
    
    d = new Date();
    var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
    alert(date);
    

    I don't know how efficient that is however, especially perf wise because it uses a lot of regex. It could probably use some work I do not master pure js.

    0 讨论(0)
  • 2020-11-22 11:41
    [day,,month,,year]= Intl.DateTimeFormat(undefined, { year: 'numeric', month: '2-digit', day: '2-digit' }).formatToParts(new Date()),year.value+month.value+day.value
    

    or

    new Date().toJSON().slice(0,10).replace(/\/|-/g,'')
    
    0 讨论(0)
提交回复
热议问题