Format JavaScript date as yyyy-mm-dd

后端 未结 30 2673
再見小時候
再見小時候 2020-11-22 01:28

I have a date with the format Sun May 11,2014. How can I convert it to 2014-05-11 using JavaScript?

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

    Reformatting a date string is fairly straightforward, e.g.

    var s = 'Sun May 11,2014';
    
    function reformatDate(s) {
      function z(n){return ('0' + n).slice(-2)}
      var months = [,'jan','feb','mar','apr','may','jun',
                     'jul','aug','sep','oct','nov','dec'];
      var b = s.split(/\W+/);
      return b[3] + '-' +
        z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' +
        z(b[2]);
    }
    
    console.log(reformatDate(s));

    0 讨论(0)
  • 2020-11-22 02:10

    A few of the previous answer were OK, but they weren't very flexible. I wanted something that could really handle more edge cases, so I took @orangleliu 's answer and expanded on it. https://jsfiddle.net/8904cmLd/1/

    function DateToString(inDate, formatString) {
        // Written by m1m1k 2018-04-05
    
        // Validate that we're working with a date
        if(!isValidDate(inDate))
        {
            inDate = new Date(inDate);
        }
    
        // See the jsFiddle for extra code to be able to use DateToString('Sun May 11,2014', 'USA');
        //formatString = CountryCodeToDateFormat(formatString);
    
        var dateObject = {
            M: inDate.getMonth() + 1,
            d: inDate.getDate(),
            D: inDate.getDate(),
            h: inDate.getHours(),
            m: inDate.getMinutes(),
            s: inDate.getSeconds(),
            y: inDate.getFullYear(),
            Y: inDate.getFullYear()
        };
    
        // Build Regex Dynamically based on the list above.
        // It should end up with something like this: "/([Yy]+|M+|[Dd]+|h+|m+|s+)/g"
        var dateMatchRegex = joinObj(dateObject, "+|") + "+";
        var regEx = new RegExp(dateMatchRegex,"g");
        formatString = formatString.replace(regEx, function(formatToken) {
            var datePartValue = dateObject[formatToken.slice(-1)];
            var tokenLength = formatToken.length;
    
            // A conflict exists between specifying 'd' for no zero pad -> expand
            // to '10' and specifying yy for just two year digits '01' instead
            // of '2001'.  One expands, the other contracts.
            //
            // So Constrict Years but Expand All Else
            if (formatToken.indexOf('y') < 0 && formatToken.indexOf('Y') < 0)
            {
                // Expand single digit format token 'd' to
                // multi digit value '10' when needed
                var tokenLength = Math.max(formatToken.length, datePartValue.toString().length);
            }
            var zeroPad = (datePartValue.toString().length < formatToken.length ? "0".repeat(tokenLength) : "");
            return (zeroPad + datePartValue).slice(-tokenLength);
        });
    
        return formatString;
    }
    

    Example usage:

    DateToString('Sun May 11,2014', 'MM/DD/yy');
    DateToString('Sun May 11,2014', 'yyyy.MM.dd');
    DateToString(new Date('Sun Dec 11,2014'),'yy-M-d');
    
    0 讨论(0)
  • 2020-11-22 02:11

    To consider the timezone also, this one-liner should be good without any library:

    new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]
    
    0 讨论(0)
  • 2020-11-22 02:12

    function myYmd(D){
        var pad = function(num) {
            var s = '0' + num;
            return s.substr(s.length - 2);
        }
        var Result = D.getFullYear() + '-' + pad((D.getMonth() + 1)) + '-' + pad(D.getDate());
        return Result;
    }
    
    var datemilli = new Date('Sun May 11,2014');
    document.write(myYmd(datemilli));

    0 讨论(0)
  • 2020-11-22 02:15
    const formatDate = d => [
        d.getFullYear(),
        (d.getMonth() + 1).toString().padStart(2, '0'),
        d.getDate().toString().padStart(2, '0')
    ].join('-');
    

    You can make use of padstart.

    padStart(n, '0') ensures that a minimum of n characters are in a string and prepends it with '0's until that length is reached.

    join('-') concatenates an array, adding '-' symbol between every elements.

    getMonth() starts at 0 hence the +1.

    0 讨论(0)
  • 2020-11-22 02:18

    You can try this: https://www.npmjs.com/package/timesolver

    npm i timesolver
    

    Use it in your code:

    const timeSolver = require('timeSolver');
    const date = new Date();
    const dateString = timeSolver.getString(date, "YYYY-MM-DD");
    

    You can get the date string by using this method:

    getString
    
    0 讨论(0)
提交回复
热议问题