Fecha de JavaScript ahora: cómo obtener la fecha actual en JavaScript

Muchas aplicaciones que cree tendrán algún tipo de componente de fecha, ya sea la fecha de creación de un recurso o la marca de tiempo de una actividad.

Lidiar con el formato de fecha y hora puede ser agotador. En esta guía, aprenderá cómo obtener la fecha actual en varios formatos en JavaScript.

Objeto de fecha de JavaScript

JavaScript tiene un Dateobjeto incorporado que almacena la fecha y la hora y proporciona métodos para manejarlas.

Para crear una nueva instancia del Dateobjeto, use la newpalabra clave:

const date = new Date();

El Dateobjeto contiene un Numberque representa milisegundos transcurridos desde la Época, es decir, el 1 de enero de 1970.

Puede pasar una cadena de fecha al Dateconstructor para crear un objeto para la fecha especificada:

const date = new Date('Jul 12 2011');

Para obtener el año actual, use el getFullYear()método de instancia del Dateobjeto. El getFullYear()método devuelve el año de la fecha especificada en el Dateconstructor:

const currentYear = date.getFullYear(); console.log(currentYear); //2020

Del mismo modo, existen métodos para obtener el día actual del mes y el mes actual:

const today = date.getDate(); const currentMonth = date.getMonth() + 1; 

El getDate()método devuelve el día actual del mes (1-31).

El getMonth()método devuelve el mes de la fecha especificada. Un punto a tener en cuenta sobre el getMonth()método es que devuelve valores indexados 0 (0-11) donde 0 es para enero y 11 para diciembre. De ahí la adición de 1 para normalizar el valor del mes.

Fecha ahora

now()es un método estático del Dateobjeto. Devuelve el valor en milisegundos que representa el tiempo transcurrido desde la Época. Puede pasar los milisegundos devueltos por el now()método al Dateconstructor para crear una instancia de un nuevo Dateobjeto:

const timeElapsed = Date.now(); const today = new Date(timeElapsed);

Formatear la fecha

Puede formatear la fecha en varios formatos (GMT, ISO, etc.) utilizando los métodos del Dateobjeto.

El toDateString()método devuelve la fecha en un formato legible por humanos:

today.toDateString(); // "Sun Jun 14 2020"

El toISOString()método devuelve la fecha que sigue al formato extendido ISO 8601:

today.toISOString(); // "2020-06-13T18:30:00.000Z"

El toUTCString()método devuelve la fecha en formato de zona horaria UTC:

today.toUTCString(); // "Sat, 13 Jun 2020 18:30:00 GMT"

El toLocaleDateString()método devuelve la fecha en un formato sensible a la localidad:

today.toLocaleDateString(); // "6/14/2020"

Puede encontrar la referencia completa de los Datemétodos en la documentación de MDN.

Función de formateador de fecha personalizado

Aparte de los formatos mencionados en la sección anterior, su aplicación puede tener un formato diferente para los datos. Podría ser en yy/dd/mmo yyyy-dd-mmformato, o algo similar.

Para abordar este problema, sería mejor crear una función reutilizable para que pueda usarse en múltiples proyectos.

Entonces, en esta sección, creemos una función de utilidad que devolverá la fecha en el formato especificado en el argumento de la función:

const today = new Date(); function formatDate(date, format) { // } formatDate(today, 'mm/dd/yy');

Debe reemplazar las cadenas "mm", "dd", "aa" con los valores de mes, día y año respectivos de la cadena de formato pasada en el argumento.

Para hacerlo, puede utilizar el replace()método que se muestra a continuación:

format.replace('mm', date.getMonth() + 1);

Pero esto dará lugar a una gran cantidad de encadenamiento de métodos y dificultará el mantenimiento mientras intenta hacer que la función sea más flexible:

format.replace('mm', date.getMonth() + 1) .replace('yy', date.getFullYear()) .replace('dd', date.getDate());

En lugar de encadenar métodos, puede utilizar expresiones regulares con el replace()método.

Primero cree un objeto que represente un par clave-valor de la subcadena y su valor respectivo:

const formatMap = { mm: date.getMonth() + 1, dd: date.getDate(), yy: date.getFullYear().toString().slice(-2), yyyy: date.getFullYear() };

A continuación, use una expresión regular para hacer coincidir y reemplazar las cadenas:

formattedDate = format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]);

La función completa se ve así:

function formatDate(date, format) { const map = { mm: date.getMonth() + 1, dd: date.getDate(), yy: date.getFullYear().toString().slice(-2), yyyy: date.getFullYear() } return format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]) }

También puede agregar la capacidad de formatear marcas de tiempo en la función.

Conclusión

Espero que ahora comprenda mejor el Dateobjeto en JavaScript. También puede usar otras bibliotecas de terceros como datesjy momentpara manejar fechas en su aplicación.

Hasta la próxima, mantente a salvo y sigue esforzándote.