¿Dónde puedo encontrar documentación sobre cómo formatear una fecha en JavaScript?

Resuelto Naga Kiran asked hace 15 años • 40 respuestas

Noté que new Date()la función de JavaScript es muy inteligente al aceptar fechas en varios formatos.

Xmas95 = new Date("25 Dec, 1995 23:15:00")
Xmas95 = new Date("2009 06 12,12:52:39")
Xmas95 = new Date("20 09 2006,12:52:39")

No pude encontrar documentación en ninguna parte que muestre todos los formatos de cadena válidos al llamar a new Date()la función.

Esto es para convertir una cadena en una fecha. Si miramos el lado opuesto, es decir, convertir un objeto de fecha en una cadena, hasta ahora tenía la impresión de que JavaScript no tiene una API incorporada para formatear un objeto de fecha en una cadena.

Nota del editor: el siguiente enfoque es el intento del autor de la pregunta que funcionó en un navegador en particular pero no funciona en general; consulte las respuestas en esta página para ver algunas soluciones reales.

Hoy jugué con el toString()método en el objeto de fecha y, sorprendentemente, sirve para formatear la fecha en cadenas.

var d1 = new Date();
d1.toString('yyyy-MM-dd');       //Returns "2009-06-29" in Internet Explorer, but not Firefox or Chrome
d1.toString('dddd, MMMM ,yyyy')  //Returns "Monday, June 29,2009" in Internet Explorer, but not Firefox or Chrome

Además, aquí no pude encontrar ninguna documentación sobre todas las formas en que podemos formatear el objeto de fecha en una cadena.

¿Dónde está la documentación que enumera los especificadores de formato admitidos por el Date()objeto?

Naga Kiran avatar Jun 29 '09 12:06 Naga Kiran
Aceptado

Me encantan 10 formas de formatear la hora y la fecha usando JavaScript y trabajando con fechas .

Básicamente, tienes tres métodos y debes combinar las cadenas tú mismo:

getDate() // Returns the date
getMonth() // Returns the month
getFullYear() // Returns the year

Ejemplo:

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth() + 1; //Months are zero based
var curr_year = d.getFullYear();
console.log(curr_date + "-" + curr_month + "-" + curr_year);
Expandir fragmento

Haim Evgi avatar Jun 29 '2009 05:06 Haim Evgi

Momento.js

Es una biblioteca de fechas de JavaScript (ligera)* para analizar, manipular y formatear fechas.

var a = moment([2010, 1, 14, 15, 25, 50, 125]);
a.format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
a.format("ddd, hA");                       // "Sun, 3PM"

(*) ligero, lo que significa 9,3 KB minificado + comprimido con g en la configuración más pequeña posible (febrero de 2014)

chx007 avatar Apr 12 '2012 07:04 chx007

Si ya estás usando jQuery UI en tu proyecto, puedes usar el método selector de fecha incorporado para formatear tu objeto de fecha:

$.datepicker.formatDate('yy-mm-dd', new Date(2007, 1 - 1, 26));

Sin embargo, el selector de fechas solo da formato a fechas y no puede dar formato a horas.

Eche un vistazo a jQuery UI datepicker formatDate , los ejemplos.

casid avatar Aug 11 '2011 07:08 casid

Función de formato personalizado:

Para formatos fijos, una función simple hace el trabajo. El siguiente ejemplo genera el formato internacional AAAA-MM-DD:

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1;
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

Nota: Sin embargo, normalmente no es una buena idea ampliar las bibliotecas estándar de Javascript (por ejemplo, añadiendo esta función al prototipo de Date).

Una función más avanzada podría generar una salida configurable basada en un parámetro de formato. Hay un par de buenos ejemplos en esta misma página.

Si escribir una función de formato es demasiado largo, existen muchas bibliotecas que lo hacen. Algunas otras respuestas ya las enumeran. Pero el aumento de la dependencia también tiene su contrapartida.

Funciones de formato estándar de ECMAScript:

Desde versiones más recientes de ECMAscript, la Dateclase tiene algunas funciones de formato específicas:

toDateString : dependiente de la implementación, muestra solo la fecha.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString : muestra la fecha y hora ISO 8601.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

toJSON : Stringificador para JSON.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString : dependiente de la implementación, una fecha en formato local.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

toLocaleString : dependiente de la implementación, una fecha y hora en formato local.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString : dependiente de la implementación, una hora en formato local.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

toString : toString genérico para fecha.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 11 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

Nota: es posible generar resultados personalizados a partir de esas funciones de formato:

new Date().toISOString().slice(0,10); // By @Image72, return YYYY-MM-DD
Adrian Maire avatar May 21 '2012 12:05 Adrian Maire

¿Dónde está la documentación que enumera los especificadores de formato admitidos por el Date()objeto?

Me encontré con esto hoy y me sorprendió bastante que nadie se tomara el tiempo para responder esta simple pregunta. Es cierto que existen muchas bibliotecas que ayudan con la manipulación de fechas. Algunos son mejores que otros. Pero esa no fue la pregunta que se hizo.

AFAIK, JavaScript puro no admite especificadores de formato de la forma en que indicó que le gustaría usarlos . Pero sí admite métodos para formatear fechas y/u horas, como .toLocaleDateString(), .toLocaleTimeString()y .toUTCString().

La Datereferencia de objeto que uso con más frecuencia está en el sitio web w3schools.com (pero una búsqueda rápida en Google revelará muchas más que pueden satisfacer mejor sus necesidades).

También tenga en cuenta que la sección Propiedades del objeto de fecha proporciona un enlace a prototype, que ilustra algunas formas en las que puede ampliar el objeto de fecha con métodos personalizados. Ha habido cierto debate en la comunidad de JavaScript a lo largo de los años sobre si esta es o no la mejor práctica, y no estoy defendiendo ni a favor ni en contra, solo señalo su existencia.

Scott Offen avatar Aug 03 '2012 16:08 Scott Offen