Cómo formatear una fecha en JavaScript

¿Cómo puedo formatear un objeto de fecha de JavaScript para que se imprima como 10-Ago-2010?

Solución

Atención: Hay mejores respuestas a continuación. Esta respuesta fue escrita en 2010 y desde entonces han llegado soluciones más nuevas y mejores. El OP debería aceptar otra respuesta.

function formatDate(date) {
  var monthNames = [
    "January", "February", "March",
    "April", "May", "June", "July",
    "August", "September", "October",
    "November", "December"
  ];

  var day = date.getDate();
  var monthIndex = date.getMonth();
  var year = date.getFullYear();

  return day + ' ' + monthNames[monthIndex] + ' ' + year;
}

console.log(formatDate(new Date()));  // show current date-time in console

Puedes editar el array monthNames para usar Jan, Feb, Mar, etc..

Comentarios (26)

Utilice la biblioteca date.format:

var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");

devuelve:

Saturday, June 9th, 2007, 5:46:21 PM 

dateformat on npm

http://jsfiddle.net/phZr7/1/

Comentarios (10)

Creo que puedes utilizar el método de fecha no estándar toLocaleFormat(formatString).

FormatString: Una cadena de formato en el mismo formato esperado por la función strftime() en C.

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

Referencias:

Comentarios (7)