How to get date time in JavaScript with format 31/12/2010 03:55 AM?
-
Related: http://stackoverflow.com/questions/1056728/formatting-a-date-in-javascript – Muhd Jul 19 '12 at 00:00
9 Answers
Semantically, you're probably looking for the one-liner
new Date().toLocaleString()
which formats the date in the locale of the user.
If you're really looking for a specific way to format dates, I recommend the moment.js library.

- 35,740
- 23
- 143
- 224
-
3
-
6Nobody should be writing their own date/time code (as in some of the other answers). The number of corner cases is astounding. Go look at the unit test page for moment.js (http://momentjs.com/tests/) -- there are 66701 tests! Just use it, it's great. Or find another library, but don't write your own code for this, you will very likely miss something (I've messed this up royally in the past). – sidewinderguy Apr 11 '16 at 21:07
-
1I don't understand why it was so hard to find a one line answer like this which works. Thanks. – timhc22 May 17 '16 at 13:57
-
To format as the questions says you'll need to add an options object. `new Date().toLocaleString( [], {month: '2-digit', year: '4-digit', hour: '2-digit', minute:'2-digit'} )` – Matt May 26 '21 at 22:15
If the format is "fixed" meaning you don't have to use other format you can have pure JavaScript instead of using whole library to format the date:
//Pad given value to the left with "0"
function AddZero(num) {
return (num >= 0 && num < 10) ? "0" + num : num + "";
}
window.onload = function() {
var now = new Date();
var strDateTime = [[AddZero(now.getDate()),
AddZero(now.getMonth() + 1),
now.getFullYear()].join("/"),
[AddZero(now.getHours()),
AddZero(now.getMinutes())].join(":"),
now.getHours() >= 12 ? "PM" : "AM"].join(" ");
document.getElementById("Console").innerHTML = "Now: " + strDateTime;
};
<div id="Console"></div>
The variable strDateTime
will hold the date/time in the format you desire and you should be able to tweak it pretty easily if you need.
I'm using join
as good practice, nothing more, it's better than adding strings together.

- 66,030
- 26
- 140
- 208
-
@Jens yep it's about as standard as possible, hard to believe any browser will have different syntax for the basic date/time methods. :) – Shadow The GPT Wizard Nov 05 '12 at 21:44
-
2great solution, also for use format just swap the AddZero(now.getDate()) and AddZero(now.getMonth() + 1) statements and ajust the hours to be, 12 if 0, and -12 if >12. Good luck and thanks for the solution – Gent Oct 24 '13 at 04:07
-
your code should return 02:45 PM instead of 14:45 PM. So I modified your code a bit: function getNowDateTimeStr(){ var now = new Date(); var hour = now.getHours() - (now.getHours() >= 12 ? 12 : 0); return [[AddZero(now.getDate()), AddZero(now.getMonth() + 1), now.getFullYear()].join("/"), [AddZero(hour), AddZero(now.getMinutes())].join(":"), now.getHours() >= 12 ? "PM" : "AM"].join(" "); } //Pad given value to the left with "0" function AddZero(num) { return (num >= 0 && num < 10) ? "0" + num : num + ""; } – dalmate Sep 11 '16 at 07:56
var now = new Date();
now.format("dd/MM/yyyy hh:mm TT");
Get full details here: Flagrant Badassery » JavaScript Date Format
-
-
2The m's are wrong. Switch the upper lower, you have minute where month should be and vice-versa. – Quibblesome Oct 11 '13 at 16:09
Date().toLocaleString()
returns this: 7/31/2018, 12:58:03 PM
Pretty close - just drop the comma and the seconds:
new Date().toLocaleString().replace(",","").replace(/:.. /," ");
Results: 7/31/2018 12:58 PM

- 7,786
- 3
- 37
- 74
I realize this question was asked almost a decade ago and answered several times over, but given I still stumbled here with the same question, I have found some encouraging solutions that I figured I'd share:
var jsonDate = (new Date()).toJSON(); // "2021-08-16T16:31:53.596Z"
var localeDateTime = (new Date()).toLocaleString(); // "8/16/2021, 11:40:57 AM"
var localeDate = (new Date()).toLocaleDateString(); // "8/16/2021"
var localeTime = (new Date()).toLocaleTimeString(); // "11:37:13 AM"
console.log(jsonDate);
console.log(localeDateTime);
console.log(localeDate);
console.log(localeTime);

- 1,329
- 15
- 12
try this:
var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var time = today.getHours()+':'+today.getMinutes()+':'+today.getSeconds();
console.log(date + ' '+ time);

- 2,585
- 3
- 29
- 45
You can convert Date to almost any format using the Snippet I have added below.
Code:
dateFormat(new Date(),"dd/mm/yy h:MM TT")
//"20/06/14 6:49 PM"
Other examples
// Can also be used as a standalone function
dateFormat(new Date(), "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM
dateFormat(new Date(),"dddd d mmmm yyyy")
//Monday 2 June 2014"
Snippet:
Add following code taken from this link into your code.
var dateFormat = function () {
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
timezoneClip = /[^-+\dA-Z]/g,
pad = function (val, len) {
val = String(val);
len = len || 2;
while (val.length < len) val = "0" + val;
return val;
};
// Regexes and supporting functions are cached through closure
return function (date, mask, utc) {
var dF = dateFormat;
// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
mask = date;
date = undefined;
}
// Passing date through Date applies Date.parse, if necessary
date = date ? new Date(date) : new Date;
if (isNaN(date)) throw SyntaxError("invalid date");
mask = String(dF.masks[mask] || mask || dF.masks["default"]);
// Allow setting the utc argument via the mask
if (mask.slice(0, 4) == "UTC:") {
mask = mask.slice(4);
utc = true;
}
var _ = utc ? "getUTC" : "get",
d = date[_ + "Date"](),
D = date[_ + "Day"](),
m = date[_ + "Month"](),
y = date[_ + "FullYear"](),
H = date[_ + "Hours"](),
M = date[_ + "Minutes"](),
s = date[_ + "Seconds"](),
L = date[_ + "Milliseconds"](),
o = utc ? 0 : date.getTimezoneOffset(),
flags = {
d: d,
dd: pad(d),
ddd: dF.i18n.dayNames[D],
dddd: dF.i18n.dayNames[D + 7],
m: m + 1,
mm: pad(m + 1),
mmm: dF.i18n.monthNames[m],
mmmm: dF.i18n.monthNames[m + 12],
yy: String(y).slice(2),
yyyy: y,
h: H % 12 || 12,
hh: pad(H % 12 || 12),
H: H,
HH: pad(H),
M: M,
MM: pad(M),
s: s,
ss: pad(s),
l: pad(L, 3),
L: pad(L > 99 ? Math.round(L / 10) : L),
t: H < 12 ? "a" : "p",
tt: H < 12 ? "am" : "pm",
T: H < 12 ? "A" : "P",
TT: H < 12 ? "AM" : "PM",
Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
};
return mask.replace(token, function ($0) {
return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
});
};
}();
// Some common format strings
dateFormat.masks = {
"default": "ddd mmm dd yyyy HH:MM:ss",
shortDate: "m/d/yy",
mediumDate: "mmm d, yyyy",
longDate: "mmmm d, yyyy",
fullDate: "dddd, mmmm d, yyyy",
shortTime: "h:MM TT",
mediumTime: "h:MM:ss TT",
longTime: "h:MM:ss TT Z",
isoDate: "yyyy-mm-dd",
isoTime: "HH:MM:ss",
isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};
// Internationalization strings
dateFormat.i18n = {
dayNames: [
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
],
monthNames: [
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
]
};
// For convenience...
Date.prototype.format = function (mask, utc) {
return dateFormat(this, mask, utc);
};

- 2,651
- 21
- 31
function pad_2(number)
{
return (number < 10 ? '0' : '') + number;
}
function hours(date)
{
var hours = date.getHours();
if(hours > 12)
return hours - 12; // Substract 12 hours when 13:00 and more
return hours;
}
function am_pm(date)
{
if(date.getHours()==0 && date.getMinutes()==0 && date.getSeconds()==0)
return ''; // No AM for MidNight
if(date.getHours()==12 && date.getMinutes()==0 && date.getSeconds()==0)
return ''; // No PM for Noon
if(date.getHours()<12)
return ' AM';
return ' PM';
}
function date_format(date)
{
return pad_2(date.getDate()) + '/' +
pad_2(date.getMonth()+1) + '/' +
(date.getFullYear() + ' ').substring(2) +
pad_2(hours(date)) + ':' +
pad_2(date.getMinutes()) +
am_pm(date);
}
Code corrected as of Sep 3 '12 at 10:11

- 504
- 5
- 10
-
Check your work. I tried this and got "03/06/112 05:02 PM" as the output. Only thing correct in there is the time. Date, month, and (obviously) year are all incorrect. – Muhd Jul 19 '12 at 00:04
@Shadow Wizard's code should return 02:45 PM instead of 14:45 PM. So I modified his code a bit:
function getNowDateTimeStr(){
var now = new Date();
var hour = now.getHours() - (now.getHours() >= 12 ? 12 : 0);
return [[AddZero(now.getDate()), AddZero(now.getMonth() + 1), now.getFullYear()].join("/"), [AddZero(hour), AddZero(now.getMinutes())].join(":"), now.getHours() >= 12 ? "PM" : "AM"].join(" ");
}
//Pad given value to the left with "0"
function AddZero(num) {
return (num >= 0 && num < 10) ? "0" + num : num + "";
}

- 462
- 5
- 13