Saltar al pie de página
AYUDA DE NODE

Day.js npm (Cómo funciona para desarrolladores)

Los manejos de fechas y horas en JavaScript han sido históricamente una tarea desafiante debido a las limitaciones y peculiaridades del objeto Date incorporado. Aunque el objeto Date nativo proporciona funcionalidad básica, a menudo no cumple con respecto a la usabilidad, lo que lleva a los desarrolladores a buscar soluciones más robustas. Una de esas soluciones es Day.js, una biblioteca minimalista de JavaScript para analizar, validar, manipular y mostrar fechas y horas.

Este artículo explora las características, beneficios y usos de Day.js, demostrando por qué se ha convertido en una opción popular entre los desarrolladores.

¿Qué es Day.js?

Day.js es una biblioteca de JavaScript ligera que proporciona una API simple para trabajar con fechas y horas para mostrar la fecha y la hora correctamente en navegadores modernos. Fue diseñada como una alternativa a la API moderna y similar Moment.js, una biblioteca muy utilizada pero mucho más pesada. Day.js tiene solo 2kB de tamaño (comprimido), lo que lo convierte en una excelente opción para aplicaciones preocupadas por el rendimiento. A pesar de su pequeño tamaño, la biblioteca Day.js es una alternativa a Moment.js y ofrece características poderosas que cubren los casos de uso más comunes.

Day.js NPM (Cómo Funciona Para Desarrolladores): Figura 1 - Day.js

Características principales

Aquí hay algunas características clave de la biblioteca Day.js:

  1. Ligero: Con su tamaño diminuto y opciones de formato avanzadas, Day.js asegura que tu aplicación se mantenga rápida y eficiente.
  2. Inmutable: Los objetos Day.js son inmutables, lo que significa que los métodos no mutan el objeto original, sino que regresan nuevas instancias.
  3. API Encadenable: Los métodos en Day.js se pueden encadenar, haciendo el código más legible y conciso.
  4. Internacionalización: Day.js soporta múltiples configuraciones regionales, permitiendo una fácil localización de fechas y horas.
  5. Sistema de Plugins: Un sistema de plugins modular te permite extender la funcionalidad de Day.js sin sobrecargar la biblioteca central.
  6. Compatibilidad: Day.js está diseñado para ser compatible con la API de Moment.js, lo que facilita la migración de bases de código existentes.

Instalación

Day.js se puede instalar fácilmente a través de npm o yarn. También se puede incluir directamente en tu archivo HTML usando un CDN.

Uso de npm

npm install dayjs
npm install dayjs
SHELL

Uso básico

Day.js ofrece un amplio soporte para zonas horarias, permitiendo a los desarrolladores gestionar fácilmente el tiempo local y realizar tareas de manipulación de tiempo con precisión. Con sus capacidades estrictas de análisis, Day.js asegura una interpretación precisa de los valores de fecha y hora, permitiendo resultados confiables y consistentes. Ya sea restando tiempo o actualizando valores, Day.js facilita el trabajo con fechas y horas, proporcionando características adicionales como la creación de nuevas instancias para mayor flexibilidad.

Veamos algunos ejemplos de trabajo con Day.js.

1. Creación de fechas

Crear una nueva instancia de fecha en Day.js es sencillo. El siguiente ejemplo lo demuestra:

const dayjs = require('dayjs');

// Current date and time
const now = dayjs();

// Specific date and time
const specificDate = dayjs('2023-05-25');
const dayjs = require('dayjs');

// Current date and time
const now = dayjs();

// Specific date and time
const specificDate = dayjs('2023-05-25');
JAVASCRIPT

2. Formateo de fechas

Day.js proporciona una manera flexible y poderosa de formatear fechas:

const date = dayjs('2023-05-25');

// Format date as "YYYY-MM-DD"
console.log(date.format('YYYY-MM-DD')); // 2023-05-25

// Format date as "dddd, MMMM D, YYYY"
console.log(date.format('dddd, MMMM D, YYYY')); // Thursday, May 25, 2023
const date = dayjs('2023-05-25');

// Format date as "YYYY-MM-DD"
console.log(date.format('YYYY-MM-DD')); // 2023-05-25

// Format date as "dddd, MMMM D, YYYY"
console.log(date.format('dddd, MMMM D, YYYY')); // Thursday, May 25, 2023
JAVASCRIPT

3. Análisis de fechas

Day.js puede analizar objetos de fecha a partir de cadenas y mostrar fechas en varios formatos:

const date1 = dayjs('2023-05-25');
const date2 = dayjs('05/25/2023', 'MM/DD/YYYY');

// Check if the dates are the same
console.log(date1.isSame(date2)); // true
const date1 = dayjs('2023-05-25');
const date2 = dayjs('05/25/2023', 'MM/DD/YYYY');

// Check if the dates are the same
console.log(date1.isSame(date2)); // true
JAVASCRIPT

4. Manipulación de fechas

Day.js permite una fácil manipulación de fechas con su API encadenable:

const date = dayjs('2023-05-25');

// Add one week to the date
const nextWeek = date.add(1, 'week');

// Subtract one month from the date
const lastMonth = date.subtract(1, 'month');

console.log(nextWeek.format('YYYY-MM-DD')); // 2023-06-01
console.log(lastMonth.format('YYYY-MM-DD')); // 2023-04-25
const date = dayjs('2023-05-25');

// Add one week to the date
const nextWeek = date.add(1, 'week');

// Subtract one month from the date
const lastMonth = date.subtract(1, 'month');

console.log(nextWeek.format('YYYY-MM-DD')); // 2023-06-01
console.log(lastMonth.format('YYYY-MM-DD')); // 2023-04-25
JAVASCRIPT

5. Comparación de fechas

Comparar fechas en Day.js es simple e intuitivo:

const date1 = dayjs('2023-05-25');
const date2 = dayjs('2023-06-01');

// Check if date1 is before date2
console.log(date1.isBefore(date2)); // true

// Check if date1 is after date2
console.log(date1.isAfter(date2)); // false

// Check if date1 is the same as date2
console.log(date1.isSame(date2)); // false
const date1 = dayjs('2023-05-25');
const date2 = dayjs('2023-06-01');

// Check if date1 is before date2
console.log(date1.isBefore(date2)); // true

// Check if date1 is after date2
console.log(date1.isAfter(date2)); // false

// Check if date1 is the same as date2
console.log(date1.isSame(date2)); // false
JAVASCRIPT

6. Localización

Day.js soporta la internacionalización (i18n) para trabajar con diferentes configuraciones regionales:

const dayjs = require('dayjs');
const localizedFormat = require('dayjs/plugin/localizedFormat');
const localeData = require('dayjs/plugin/localeData');
const updateLocale = require('dayjs/plugin/updateLocale');

// Extend Day.js with plugins
dayjs.extend(localizedFormat);
dayjs.extend(localeData);
dayjs.extend(updateLocale);

// Set locale to French
dayjs.locale('fr');

// Display date in localized format
console.log(dayjs().format('dddd, MMMM D, YYYY')); // jeudi, mai 25, 2023

// Customize locale
dayjs.updateLocale('fr', {
    months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
    weekdays: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']
});

// Display date in customized localized format
console.log(dayjs().format('dddd, MMMM D, YYYY')); // jeudi, mai 25, 2023
const dayjs = require('dayjs');
const localizedFormat = require('dayjs/plugin/localizedFormat');
const localeData = require('dayjs/plugin/localeData');
const updateLocale = require('dayjs/plugin/updateLocale');

// Extend Day.js with plugins
dayjs.extend(localizedFormat);
dayjs.extend(localeData);
dayjs.extend(updateLocale);

// Set locale to French
dayjs.locale('fr');

// Display date in localized format
console.log(dayjs().format('dddd, MMMM D, YYYY')); // jeudi, mai 25, 2023

// Customize locale
dayjs.updateLocale('fr', {
    months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
    weekdays: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']
});

// Display date in customized localized format
console.log(dayjs().format('dddd, MMMM D, YYYY')); // jeudi, mai 25, 2023
JAVASCRIPT

Uso de Day.js con IronPDF para añadir fechas a PDFs en Node.js

Combinar el poder de Day.js, un paquete de biblioteca de fechas de JavaScript ligero, con IronPDF, una biblioteca versátil de generación y manipulación de PDF para Node.js, permite a los desarrolladores manejar eficientemente las fechas en sus documentos PDF.

IronPDF - La biblioteca PDF de Node.js

IronPDF para Node.js es una biblioteca integral que empodera a los desarrolladores para crear, manipular e interactuar con documentos PDF sin problemas dentro de sus aplicaciones Node.js. Ofreciendo un conjunto enriquecido de características, IronPDF simplifica tareas como la generación de PDFs a partir de HTML, URLs de sitios web o documentos existentes, añadiendo texto, imágenes y elementos interactivos, así como convertir HTML a PDF con precisión.

Day.js NPM (Cómo Funciona Para Desarrolladores): Figura 2 - IronPDF

Para más información detallada sobre IronPDF para Node.js, por favor visita esta página de documentación.

Para empezar

Primero, asegúrate de tener instalados los paquetes necesarios. Puedes instalar Day.js e IronPDF vía npm:

 npm i @ironsoftware/ironpdf

Añadir firmas digitales con fechas

IronPDF también soporta añadir firmas digitales a PDFs. Aquí te mostramos cómo añadir una firma con una marca de tiempo usando Day.js.

import dayjs from 'dayjs';
import { PdfDocument } from "@ironsoftware/ironpdf";

(async () => {
    // Import a PDF
    const pdf = await PdfDocument.open("sample.pdf");

    // Get the current date and time for the signature
    const signatureDate = dayjs().toDate();

    // Sign the PDF with a digital certificate
    await pdf.signDigitalSignature({
        certificatePath: "IronSoftware.pfx",
        certificatePassword: "123456",
        signingReason: "To show how to sign a PDF",
        signingLocation: "Chicago, USA",
        signatureDate: signatureDate,
        signatureImage: {
            SignatureImagePath: "logo.png"
        }
    });

    // Save the signed PDF
    await pdf.saveAs("signed_with_date.pdf");
})();
import dayjs from 'dayjs';
import { PdfDocument } from "@ironsoftware/ironpdf";

(async () => {
    // Import a PDF
    const pdf = await PdfDocument.open("sample.pdf");

    // Get the current date and time for the signature
    const signatureDate = dayjs().toDate();

    // Sign the PDF with a digital certificate
    await pdf.signDigitalSignature({
        certificatePath: "IronSoftware.pfx",
        certificatePassword: "123456",
        signingReason: "To show how to sign a PDF",
        signingLocation: "Chicago, USA",
        signatureDate: signatureDate,
        signatureImage: {
            SignatureImagePath: "logo.png"
        }
    });

    // Save the signed PDF
    await pdf.saveAs("signed_with_date.pdf");
})();
JAVASCRIPT

Aquí está el resultado:

Day.js NPM (Cómo Funciona Para Desarrolladores): Figura 3 - Salida PDF

También puedes usar ejemplos de código listos para usar para comenzar inmediatamente con la biblioteca en tu aplicación Node.js. Para una exploración más detallada, también puedes visitar esta página de Referencia API.

Conclusión

Day.js es una biblioteca poderosa y eficiente para gestionar fechas y horas en JavaScript. Su naturaleza ligera, soporte para estructuras de datos inmutables y compatibilidad con Moment.js lo hacen una opción atractiva para los desarrolladores que buscan manejar operaciones de fecha y hora sin añadir una sobrecarga significativa a sus aplicaciones.

Al integrar Day.js con IronPDF, los desarrolladores pueden manejar fácilmente las fechas en sus documentos PDF. Ya sea generando PDFs de URLs o cadenas HTML o añadiendo firmas digitales con marcas de tiempo, Day.js proporciona una forma simple y poderosa de manejar fechas. Esta combinación mejora la funcionalidad de tus aplicaciones de Node.js, permitiendo una robusta y dinámica gestión de documentos PDF.

Experimenta IronPDF a partir de $799. Comprueba por ti mismo cuán poderosa puede ser la generación y manipulación de PDF. ¡Pruébalo hoy!

Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Ciencias de la Computación de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde joven, vio la computación como algo misterioso y accesible, convirtiéndolo en el ...

Leer más