function formatDate(date, format) {
if (isNaN(date.getTime())) return "Invalid Date";
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
for(var i=0; i<format.length; i++){
case "\\": buffer.push(format[++i]); break;
case "Y": buffer.push("" + date.getFullYear()); break;
case "y": buffer.push(("" + date.getFullYear()).substring(2)); break;
case "m": buffer.push(("0" + (date.getMonth() + 1)).substr(-2, 2)); break;
case "n": buffer.push("" + (date.getMonth() + 1)); break;
case "t": buffer.push("" + new Date(date.getFullYear(), date.getMonth() - 1, 0).getDate()); break;
case "d": buffer.push(("0" + date.getDate()).substr(-2, 2)); break;
case "j": buffer.push(date.getDate() + ""); break;
case "w": buffer.push(date.getDay()); break;
case "g": buffer.push("" + (date.getHours() > 12 ? date.getHours() - 12 : date.getHours())); break;
case "G": buffer.push("" + (date.getHours() + 1)); break;
case "h": buffer.push(("0" + (date.getHours() > 12 ? date.getHours() - 12 : date.getHours())).substr(-2, 2)); break;
case "H": buffer.push(("0" + (date.getHours() + 1)).substr(-2, 2)); break;
case "i": buffer.push(("0" + date.getMinutes()).substr(-2, 2)); break;
case "s": buffer.push(("0" + date.getSeconds()).substr(-2, 2)); break;
case "a": buffer.push(date.getHours() > 11 ? "pm" : "am"); break;
case "A": buffer.push(date.getHours() > 11 ? "PM" : "AM"); break;
case "l": buffer.push(days[date.getDay()]); break;
case "D": buffer.push(days[date.getDay()].substr(0, 3)); break;
case "F": buffer.push(months[date.getMonth()]); break;
case "M": buffer.push(months[date.getMonth()].substring(0, 3)); break;
default: buffer.push(format[i]); break;
alert(formatDate(new Date(), 'l, F j g:i A'));
Date.prototype.format = function(format){
return formatDate(this, format);
alert(new Date().format('\\T\\o\\d\\a\\y \\i\\s m/d/y g:i:s a'));