29

How to create the date in YYYYMMDDHHMMSS format using JavaScript ? For example, I want to get the date as 20131018064838.

6
  • I would use the library I suggested here anyway it would help a lot if you share your actual code too. Commented Oct 18, 2013 at 11:23
  • 13
    (new Date()).toISOString().replace(/[^0-9]/g, "").slice(0, -3) Commented Aug 14, 2017 at 12:47
  • @MBS yours is the aptest answer Commented Jul 25, 2020 at 10:22
  • another solution: dt=new Date().toISOString().split('.')[0].replace(/[^\d]/gi,''); sets dt to, (for example): 20210809154700 Commented Aug 9, 2021 at 15:46
  • 1
    Or new Date.toISOString().replace(/(\.\d{3})|[^\d]/g,'') Commented Jan 21, 2022 at 7:37

3 Answers 3

21
var date = new Date();

alert( date.getFullYear() + ("0" + (date.getMonth() + 1)).slice(-2) + ("0" + date.getDate()).slice(-2) + ("0" + date.getHours() ).slice(-2) + ("0" + date.getMinutes()).slice(-2) + ("0" + date.getSeconds()).slice(-2) );

edit

function pad2(n) { return n < 10 ? '0' + n : n }

var date = new Date();
    
alert( date.getFullYear().toString() + pad2(date.getMonth() + 1) + pad2( date.getDate()) + pad2( date.getHours() ) + pad2( date.getMinutes() ) + pad2( date.getSeconds() ) );
Sign up to request clarification or add additional context in comments.

12 Comments

neat as the ('0' + n).slice(-2) hack is, IMHO it's not very readable and the OP would be far better served with a little pad2 helper function, e.g. function pad2(n) { return n < 10 ? '0' + n : n }
p.s. and why +1 the getHours result?!
Halfway through line 2 you started using this instead of date.
@Butt4cak3 made changes as per suggestions
@gurvinder372 congrats - you now have the only correct (standalone) answer!
|
11

Here's my (ES5 safe) method to add the YYYYMMDDHHMMSS() function to any Date object.

On older browsers, either shim Object.defineProperty or just add the inner function directly to Date.prototype:

Object.defineProperty(Date.prototype, 'YYYYMMDDHHMMSS', {
    value: function() {
        function pad2(n) {  // always returns a string
            return (n < 10 ? '0' : '') + n;
        }

        return this.getFullYear() +
               pad2(this.getMonth() + 1) + 
               pad2(this.getDate()) +
               pad2(this.getHours()) +
               pad2(this.getMinutes()) +
               pad2(this.getSeconds());
    }
});

1 Comment

A bit subjective perhaps, but (assuming timezone being zero UTC offset is fine, ) I think new Date().toISOString().slice(-24).replace(/\D/g,'').slice(0, 14); is cleaner since it involves no tinkering with zero-padding or correction of the month number.
7

Please try using prototype method as following.

<script type="text/javascript">

    Date.prototype.YYYYMMDDHHMMSS = function () {
        var yyyy = this.getFullYear().toString();
        var MM = pad(this.getMonth() + 1,2);
        var dd = pad(this.getDate(), 2);
        var hh = pad(this.getHours(), 2);
        var mm = pad(this.getMinutes(), 2)
        var ss = pad(this.getSeconds(), 2)

        return yyyy + MM + dd+  hh + mm + ss;
    };

    function getDate() {
        d = new Date();
        alert(d.YYYYMMDDHHMMSS());
    }

    function pad(number, length) {
        var str = '' + number;
        while (str.length < length) {
            str = '0' + str;
        }
        return str;
    }
</script>

3 Comments

that's a novel (but inefficient) way of zero padding the numbers... You also omitted to zero pad the time fields.
getting better, but in this case there's no need to pad beyond two digits, and you could then make pad2 (per the other answer that uses it) an inner function within Date.prototype.YYYYMMDDHHMMSS to avoid polluting the global name space.
thanks for code snippets, I've more customized for debugging purpose. jsfiddle.net/trustfarm/nvvzgax1/4

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.