Format date in jQuery
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");
Mark Fondy
Updated on April 15, 2020Comments
-
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"));
I would like receive format: 2012-01-29 06:12
-
Mark Fondy over 12 yearsthanks, but i must use object created with clear javascript - new Date().
-
Mark Brackett over 12 years@Mark Fondy - it will hijack the Date prototype; so no worries.
-
Ates Goral over 12 yearsMy 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 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 over 11 yearsThis 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