Gestiona la fecha y las horas en Javascript usando Day.js, librería que sólo ocupa 2kB.
En Javascript podemos usar el objeto Date para gestionar fechas y horas, pero a medida que necesitemos operaciones más complejas el trabajo se vuelve más farragoso. Aunque existen varias alternativas, Day.JS es una librería sólida, que ocupa poco espacio y de uso bastante común. Además, si en el pasado usaste librerías antiguas como Moment.js, la sintaxis es muy parecida, por lo que es ideal en muchos aspectos.
Integrar de Day.js en un proyecto es muy sencillo. Puedes empezar ejecutando el siguiente comando en tu terminal según utilizes npm, yarn o pnpm:
npm install dayjs
o bien,
yarn add dayjs
o bien,
pnpm add dayjs
Una vez instalado, puedes importarlo y comenzar a utilizar Day.js en tu aplicación. Si utilizas ES 2015:
import dayjs from 'dayjs'
o bien,
const dayjs = require('dayjs')
El uso de esta librería es muy intuitivo. Veamos algunos ejemplos básicos para entender su sintaxis.
La función dayjs() nos devuelve un objeto con el formato de Day JS, si deseamos obtener el equivalente al objeto nativo Date de Javascript, podemos usar el método toDate()
dayjs().toDate()
const sumarDia = dayjs().add(1, 'day')
const sumarDia = dayjs().subtract(1, 'day')
const fechaFormateada = dayjs().format('DD/MM/YYYY')
Hay ciertos formatos comunes que pueden ser localizados en cada idioma.
Requiere un plugin:
import * as localizedFormat from 'dayjs/plugin/localizedFormat'dayjs.extend(localizedFormat)
dayjs('01-02-2023').format('L')// '01/02/2021'
dayjs('01-02-2023 23:59:59').format('LTS')// '11:59:59 PM'
Tipos de formato:
const fecha1 = dayjs('2023-12-21')const fecha2 = dayjs('2024-01-01')const esAnterior = fecha1.isBefore(fecha2) // Devolverá true
const fecha1 = dayjs('2023-02-24')const fecha2 = dayjs('2021-07-07')
const diferenciaEnMilisegundos = fecha1.diff(fecha2)console.log(diferenciaEnMilisegundos)
Si luego queremos, podemos transformar los milisegundos en otras unidades, por ejemplo, para saber la diferencia en meses:
fecha1.diff(fecha2, 'month')
Las denominaciones disponibles son:
Métodos que devuelven el inicio o final de la unidad especificada, por ejemplo:
dayjs().startOf('year').toDate()// Sun Jan 01 2023 00:00:00
dayjs().endOf('year').toDate()// Sun Dec 31 2023 23:59:59
Podemos modificar cualquier valor de una fecha especificada, por ejemplo:
dayjs('1-1-2023').year(2021).toDate()// Fri Jan 01 2021 00:00:00
dayjs('1-1-2023').date(31).hour(23).minutes(59).seconds(59).toDate()// Sun Jan 31 2023 23:59:59
Si queremos transformar una cadena de texto a fecha, debemos importar un pluugin:
import * as customParseFormat from 'dayjs/plugin/customParseFormat'dayjs.extend(customParseFormat)
dayjs('06/02/95 2:00:00 PM -05:00', 'MM/DD/YY H:mm:ss A Z')// Sun Jun 05 1995 20:00:00 GMT+0100
Se requiere importar un plugin
import 'dayjs/locale/en-gb'import * as localizedFormat from 'dayjs/plugin/localizedFormat'dayjs.extend(localizedFormat)
dayjs().locale('en-us').format('ll') // Dec 21, 2023dayjs().locale('en-gb').format('ll') // 21 Dec 2023
Day.js ofrece muchas funcionalidades para facilitar el trabajo de manipulación de fechas y horas, además puede extenderse con plugins y usar diferentes idiomas. Recomendamos visitar la página oficial para acceder a toda la documentación.