MomentJS: La solución a tus problemas de fecha

La biblioteca MomentJS ofrece herramientas realmente sólidas para gestionar el formato de nuestras fechas. Cuando programamos, la gestión de las fechas siempre son una parte importante de nuestro código a tener en cuenta, ya que estas cambian a lo largo del tiempo.

Esta biblioteca ya es utilizada por miles de software, aplicaciones y servicios alrededor del mundo y recientemente dejará de actualizarse. Hay alternativas. Pero, si como nosotros, la usáis profusamente. Seguirá funcionando durante mucho tiempo. ¿Por qué es tan utilizada? Porque nos proporciona una gran fiabilidad y libertad a la hora de especificar cómo queremos nuestras fechas.

Para empezar a utilizar esta librería en nuestro proyecto de node ejecutaremos:

npm install moment

Posteriormente, dependiendo de la sintaxis utilizada, importaremos la libreria :

//En JavaScript Vanilla
var moment = require('moment'); // require
moment().format(); 
//En ES6
import moment from 'moment';
moment().format();

Funciones básicas

moment()

Cuando queremos obtener la fecha de hoy new Date() y moment()son muy similares a la hora de utilizarse, la principal diferencia entre utilizar el objeto de la API de JavaScript y MomentJS es que Moment da soporte al traspaso de fechas internacionales.

Además, Moment encapsula toda la lógica del objeto «Date», simplificándola para un uso más sencillo. Esto nos permite obtener un código de calidad más limpio y eficiente con soporte a largo plazo.

//Uso
console.log(moment());
//Output
"2024-03-06T11:32:16.297Z"

Utilizar moment() como se ha mencionado anteriormente devolverá el objeto con sus funciones junto con un texto de la fecha actual en formato ISO8601, el cual equivale al formato YYYY-MM-DDTHH:mm:ssZ.

Opcionalmente, la función acepta parámetros de fecha o formato, devolviendo así el parámetro formateado correctamente. La función adicionalmente puede contener un booleano para exigir que tanto la fecha como el formato introducido sean estrictamente iguales.

.startOf() & .endOf()

Ambas funciones, cómo sus nombres indican, permiten extraer el inicio o final de una fecha respectivamente, pasándoles un parámetro de unidad de tiempo. Ya no es estrictamente necesario preocuparse de substraer o añadir días para encontrar un inicio o final de una fecha deseada.

Las unidades disponibles por parámetro son:

  • Año
  • Mes
  • Cuarto (primer día del año actual)
  • Semana (primer día siendo el domingo)
  • Semana en formato ISO (primer día siendo el lunes)
  • Día
  • Fecha (Similar al formato anterior)
  • Hora (Minutos, segundos y milisegundos en 0)
  • Minuto (Segundos y milisegundos a 0)
  • Segundo (Milisegundos a 0)

Ejemplos de uso:

//Primer día del mes
moment().startOf('months').format("DD");
//Último día del mes
moment().endOf('months').format("DD");

.format()

Ya hemos visto la función format() en ejemplos anteriores. Como podemos imaginar, esta función admite un parámetro de tipo texto, y al ser utilizada junto al objeto de moment nos devolverá formateada la fecha del objeto en el formato especificado.

Ejemplos de uso:

//Uso
console.log(moment("1234", "hmm").format("HH:mm"));
//Output
"12:34"
//Uso
console.log(moment('2012-10-14').format('DD-MM-YY'));
//Output
"14-10-12"

.subtract() & .add()

Es muy común que a la hora de trabajar con fechas tengamos la necesidad de substraer o sumar valores a dicho momento. Para ello moment()nos ofrece estas dos funciones que facilitan muchísimo ese hecho.

Veamos diversos ejemplos en práctica:

//Uso => Hoy 08/03/2024
console.log(moment().subtract(1,'days').format("DD/MM/YYYY"));
//Output
"07/03/2024"
//Uso
console.log(moment().add(3,'days').format("DD/MM/YYYY"));
//Output
"11/03/2024"
//Uso
console.log(moment().subtract(2,'months').format("DD/MM/YYYY"));
//Output
"08/01/2024"
//Uso
console.log(moment().add(2,'weeks').format("DD/MM/YYYY"));
//Output
"22/03/2024"

.isBefore() & .isAfter() & .isBetween()

Hay casos en los que queremos saber si un plazo ha pasado antes, después o está dentro de un rango de momentos concreto. Estas funciones son realmente versátiles, ya que además de permitirnos pasar por parámetro una fecha en formato texto, también permite el uso de objetos Date()moment(). Cuando utilicemos estos tres procesos, si la condición se cumple devolverá un booleano respectivamente.

Diversos ejemplos:

//Uso
let yesterday = moment().subtract(1,'days');
let today = moment();
console.log(today.isAfter(yesterday));
//Output
true
//Uso
let aYearAgo = moment().subtract(1,'years');
let today = moment();
console.log(aYearAgo.isBefore(today));
//Output
true
//Uso
console.log(moment('2012-10-20').isBetween('2010-10-19', '2010-10-25'));
//Output
false

.isLeapYear()

.isLeapYear()es un método que devuelve un condicional si el año de la fecha especificada es bisiesto.

//Uso
console.log(moment([2024]).isLeapYear());
//Output
true
//Uso
console.log(moment([2001]).isLeapYear());
false

En conclusión, Moment.js es una gran librería que simplifica la manera en la que tratamos las fechas, permitiéndonos integrar un código mucho más limpio y eficiente a la hora de controlar los datos de fecha en nuestras aplicaciones.


BACK TO BASICS: GIT

PEQUEÑO CURSO DE GIT

Este pequeño repaso a algunos comandos comunes nos van a dar una pincelada para conocer el funcionamiento de Git y sus múltiples opciones.

A pesar de ser una herramienta que puede ser muy compleja, con conocer una serie de comandos que nos ayuden a movernos a través de nuestros proyectos, será suficiente para poder tener un mínimo control sobre el proyecto y sus ramas.

No es ni de lejos una guía exhaustiva, sino una pequeña guía para emprender unos primeros pasos y poder movernos por Git con seguridad.

1. Git config –global: esto hará que cualquier uso en el equipo utilice esta configuración

   user.name «nombre»

   user.email «email»

   Podemos hacer scripts con git config –global alias.nombre «comando»

«Read More»