¿Qué es esta biblioteca y para qué sirve?
\n\nMoment.js y Day.js son dos potentes bibliotecas para JavaScript, diseñadas para trabajar con fechas y horas. Resuelven un problema fundamental: el objeto nativo Date en JavaScript es extremadamente incómodo para tareas cotidianas. No admite formato, cálculos complejos con fechas, análisis de cadenas en diferentes formatos ni trabajo con zonas horarias sin escribir decenas de líneas de código.
Moment.js fue durante mucho tiempo el estándar de facto, pero ahora se considera "legacy": su desarrollo está congelado y no se recomienda para nuevos proyectos debido a su gran tamaño (alrededor de 300 KB). Lo ha reemplazado Day.js, una biblioteca ligera (solo 2 KB) y rápida con una API prácticamente idéntica. Day.js es totalmente compatible con Moment.js en la mayoría de las operaciones básicas, lo que facilita la migración.
\n\nAmbas bibliotecas ofrecen:
\n- \n
- Análisis de fechas a partir de cadenas de cualquier formato \n
- Formateo de fechas en cadenas legibles \n
- Manipulaciones (suma/resta de días, meses, años) \n
- Comparación de fechas (antes, después, entre) \n
- Trabajo con zonas horarias (a través de complementos) \n
- Localización (soporte para diferentes idiomas y formatos regionales) \n
En este artículo, nos centraremos en Day.js como alternativa moderna, pero todos los ejemplos también funcionarán con Moment.js con cambios mínimos.
\n\nInstalación
\n\nLa instalación para Node.js se realiza a través de npm o yarn. Para el navegador, se puede usar un CDN.
\n\nInstalación de Day.js
\n# A través de npm\nnpm install dayjs\n\n# A través de yarn\nyarn add dayjs\n\nInstalación de Moment.js
\nnpm install moment\n\n# o\nyarn add moment\n\nInclusión en el proyecto
\n// Day.js\nconst dayjs = require('dayjs');\n\n// Moment.js\nconst moment = require('moment');\n\nInicio rápido con un ejemplo de código
\n\nDespués de la instalación, puede comenzar a trabajar con fechas de inmediato. Aquí hay un ejemplo mínimo que demuestra las capacidades principales:
\n\nconst dayjs = require('dayjs');\n\n// Fecha y hora actuales\nconst now = dayjs();\nconsole.log('Ahora:', now.format('DD.MM.YYYY HH:mm:ss'));\n\n// Análisis de una cadena\nconst date = dayjs('2024-03-15');\nconsole.log('Análisis:', date.format('DD.MM.YYYY'));\n\n// Manipulaciones\nconst nextWeek = dayjs().add(7, 'day');\nconsole.log('En una semana:', nextWeek.format('DD.MM.YYYY'));\n\n// Diferencia entre fechas\nconst diff = nextWeek.diff(now, 'day');\nconsole.log('Diferencia en días:', diff);\n\n// Comparación\nconsole.log('¿Hoy es antes?', now.isBefore(nextWeek)); // true\n\nMétodos/Funciones principales
\n\n1. dayjs() — creación de un objeto de fecha
\nQué hace: Crea un objeto Day.js que representa un momento específico en el tiempo. Sin argumentos, devuelve la fecha y hora actuales.
\nParámetros:
\n- \n
date(opcional) — una cadena, número (timestamp), objeto Date u otro objeto Day.js \n format(opcional) — una cadena de formato para el análisis, si date es una cadena \n
Ejemplo de código funcional:
\n// Fecha actual\nconst now = dayjs();\n\n// Desde una cadena\nconst fromString = dayjs('2024-12-31');\n\n// Desde un timestamp (milisegundos)\nconst fromTimestamp = dayjs(1704067200000);\n\n// Desde un objeto Date\nconst fromDate = dayjs(new Date(2024, 0, 1)); // 1 de enero de 2024\n\n// Especificando el formato\nconst customFormat = dayjs('31.12.2024', 'DD.MM.YYYY');\n\nconsole.log(now.format()); // 2024-03-15T10:30:00+03:00\nconsole.log(customFormat.format('YYYY-MM-DD')); // 2024-12-31\n\n2. format() — formateo de fecha
\nQué hace: Convierte el objeto de fecha en una cadena según un formato
También en la biblioteca
Swashbuckle para C# (.NET): guía completa con ejemplos
Envío de correo electrónico en TypeScript: guía completa con nodemailer y SMTP
Cliente Redis para Swift (iOS/macOS) – RediStack
Caché en C++: Redis, memcached, LevelDB y otras herramientas
Trabajo con fechas en JavaScript (Node.js): bibliotecas populares