Dayjs - Uma biblioteca poderosa para trabalhar com datas e horas em javascript

DayJS - Uma biblioteca poderosa para trabalhar com datas e horas em Javascript

Data de Publicação: 18 de julho de 2023

Javascript

Introdução

Trabalhar com datas em Javascript pode ser uma tarefa complicada, especialmente quando se trata de lidar com fusos horários diferentes. É aí que a biblioteca DayJS entra em ação, ela é bem leve e fornece uma API simples e consistente para lidar com datas e horas.

Por que usar DayJS?

A biblioteca DayJS oferece uma série de vantagens em relação a outras bibliotecas para manipulação de datas, como:

  • É leve e rápida - DayJS é uma biblioteca muito leve, possuindo apenas 2 KB de tamanho;
  • É fácil de usar - A API é muito simples e fácil de entender, mesmo para desenvolvedores iniciantes;
  • É atualizada regularmente - A biblioteca é atualizada regularmente com novas funcionalidades e correções de bugs;
  • Utiliza o conceito de imutabilidade - Isso significa que todos os métodos que executam alguma alteração na data inicial, na verdade retornam um novo objeto.
  • É compatível com fusos horários diferentes - A biblioteca DayJS consegue lidar com datas e horas em qualquer fuso horário.

Padrão de datas UTC

O padrão de datas UTC é um padrão internacional para representar datas e horas. UTC significa Coordinated Universal Time, que é uma referência de tempo atômica usada como base para o fuso horário mundial. É recomendado utilizar o padrão UTC no desenvolvimento de software, pois assim é possível garantir que as datas e horas serão interpretadas corretamente independentemente do fuso horário do servidor onde será publicada a aplicação.

Habilitando suporte ao padrão UTC na biblioteca DayJS

A biblioteca DayJS trabalha com o conceito de plugins, separando as funcionalidades avançadas em plugins isolados. Sendo assim, para habilitar o suporte ao padrão UTC é necessário importar este plugin e utilizar o método extend():

import dayjs from 'dayjs'
import utc from 'dayjs/plugins/utc'

dayjs.extend(utc)

Agora para criar uma data basta utilizar a sintaxe dayjs.utc() ao invés de utilizar apenas dayjs().

Como somar ou subtrair dias com DayJS

Para somar ou subtrair dias de uma determinada data com DayJS é muito simples, basta utilizar os métodos add ou subtract:

const now = dayjs.utc()
const tomorrow = now.add(1, 'day')
const yesterday = now.subtract(1, 'day')

Também é possível somar e subtrair meses, anos e até horas utilizando estes mesmos métodos

Como setar datas específicas com DayJS

Além dos métodos de somar e subtrair, também é possível definir um dia específico. Isso pode ser feito tanto através do método date quanto através do método set, que funciona como um setter global:

const now = dayjs.utc()

const firstDayOfMonth = now.date(1)

const lastDay = now.daysInMonth()
const lastDayOfMonth = now.set('date', lastDay)

Como setar horas especificas com DayJS

Você pode utilizar os métodos hour, minute e second para definir valores específicos:

const now = dayjs.utc()

now.hour(12)
now.minute(45)
now.second(59)

Estes métodos também funcionam como getters quando não recebem nenhum argumento.

Como validar se uma data é maior ou menor que a data atual com DayJS

Além de fornecer métodos para alterar datas e horas, a biblioteca DayJS também facilita a validação entre datas. Através dos métodos isBefore e isAfter é possível validar por exemplo se uma determinada data é maior ou menor que a data atual:

const now = dayjs.utc()
const tomorrow = now.add(1, 'day')
const yesterday = now.subtract(1, 'day')

tomorrow.isAfter(now) // true
yesterday.isBefore(now) // true
now.isAfter(tomorrow) // false

Como formatar datas com DayJS

É possível formatar datas através do método format, informando o padrão de formatação desejado:

const now = dayjs.utc()
now.format('DD/MM/YYYY') // 18/07/2023
now.format('DD/MM/YYYY HH:mm:ss') // 18/07/2023 19:30:35

Conclusão

A biblioteca DayJS embora seja bem leve, possui funcionalidades poderosas para trabalhar com datas e fornece uma API bem fácil de usar. Ela com certeza proporciona um grande ganho de produtividade!