Format date in jQuery

88,752

Solution 1

This question is a duplicate (see: How to get current date in jquery?).

By modifying my solution from the other question, I got:

var d = new Date();

var month = d.getMonth()+1;
var day = d.getDate();
var hour = d.getHours();
var minute = d.getMinutes();
var second = d.getSeconds();

var output = d.getFullYear() + '-' +
    ((''+month).length<2 ? '0' : '') + month + '-' +
    ((''+day).length<2 ? '0' : '') + day + ' ' +
    ((''+hour).length<2 ? '0' :'') + hour + ':' +
    ((''+minute).length<2 ? '0' :'') + minute + ':' +
    ((''+second).length<2 ? '0' :'') + second;

See this jsfiddle for a proof: http://jsfiddle.net/nCE9u/3/

You can also enclose it within function (demo is here: http://jsfiddle.net/nCE9u/4/):

function getISODateTime(d){
    // padding function
    var s = function(a,b){return(1e15+a+"").slice(-b)};

    // default date parameter
    if (typeof d === 'undefined'){
        d = new Date();
    };

    // return ISO datetime
    return d.getFullYear() + '-' +
        s(d.getMonth()+1,2) + '-' +
        s(d.getDate(),2) + ' ' +
        s(d.getHours(),2) + ':' +
        s(d.getMinutes(),2) + ':' +
        s(d.getSeconds(),2);
}

and use it like that:

getISODateTime(new Date());

or:

getISODateTime(some_other_date);

EDIT: I have added some improvement to the function, as proposed by Ates Goral (also decreased its readability in favour of code comments).

Solution 2

Datejs.toString('yyyy-MM-dd HH:mm') should do the trick

Solution 3

Use a library like Datejs or perhaps this tweet-sized implementation:

https://gist.github.com/1005948

var str = formatDate(
    new Date(),
    "{FullYear}-{Month:2}-{Date:2} {Hours:2}:{Minutes:2}");

Solution 4

Unfortunately, in Javascript, Date does not have a format() method.

Check out http://fisforformat.sourceforge.net for some nice formatting methods.

Solution 5

I think this could be help you:date.format.js

var now = new Date();
now.format("m/dd/yy");
// Returns, e.g., 6/09/07
// Can also be used as a standalone function
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM
// You can use one of several named masks
now.format("isoDateTime");
Share:
88,752
Mark Fondy
Author by

Mark Fondy

Updated on April 15, 2020

Comments

  • Mark Fondy
    Mark Fondy about 4 years
    var date = "Fri Jan 29 2012 06:12:00 GMT+0100";
    

    How can i show this in format 2012-01-29 06:12 ? In PHP is function ->format. In Javascript is also format, but if i try use this then i have error:

    now.format is not a function

    var now = new Date();
    console.log(now.format("isoDateTime"));
    

    http://jsfiddle.net/6v9hD/

    I would like receive format: 2012-01-29 06:12

  • Mark Fondy
    Mark Fondy over 12 years
    thanks, but i must use object created with clear javascript - new Date().
  • Mark Brackett
    Mark Brackett over 12 years
    @Mark Fondy - it will hijack the Date prototype; so no worries.
  • Ates Goral
    Ates Goral over 12 years
    My goodness. This is one verbose implementation :/ You could at least use a local function for the padding: function pad(n) { return n < 10 ? n : ("0" + n); }
  • Tadeck
    Tadeck over 12 years
    @AtesGoral: You are right about internal function - I have refactored this code. For consistency reasons I made it return string at all times (in your case sometimes it would be an integer). Thanks for pointing this out.
  • Jimbo
    Jimbo over 11 years
    This is nice and really should be the first answer that pops up when searching for formatting JS dateTime. Can't believe vanilla JS doesn't have something like this built in - it's crazy we have to have a big-ass function to do something this simple! :P