Formatting Javascript Date with Month Name

Oh the limitations of javascript… So I needed a way to produce a date/time string that would match the way I format my date/time strings in C# (MMMM dd, yyyy hh:mm:ss tt). As most know, javascript isn’t very nice when it comes to working with dates/times. My project had the added benefit of some special requirements. jQuery could be used, but no plug-ins are allowed.

After doing plenty of searching and posing a question on StackOverflow, I came up with this function. I sure wish the function could be shorter…


function getFormattedDateTime(dateTimeToFormat) {
dateTimeToFormat = new Date(dateTimeToFormat);

var zeroPad = function (val) {
return (val <= 9 ? '0' + val : '' + val);
};

var month = dateTimeToFormat.toLocaleString('en-us', {month: "long"});
var day = dateTimeToFormat.getDate();
var year = dateTimeToFormat.getFullYear();

var hour = ((dateTimeToFormat.getHours() + 11) % 12 + 1);
var minutes = dateTimeToFormat.getMinutes();
var seconds = dateTimeToFormat.getSeconds();
var suffix = (hour <= 12) ? 'AM' : 'PM';

return month + ' ' + zeroPad(day) + ', ' + year + ' ' + zeroPad(hour) + ':' + zeroPad(minutes) + ':' + zeroPad(seconds) + ' ' + suffix;
}

You can play with this function in action on JSFiddle

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: