Date
objeto que você pode usar para trabalhar com data e hora em JavaScript. Na verdade, temos vários tutoriais no Envato Tuts+ que abordam esse tópico em detalhes.
O Date
objeto em JavaScript tem alguns métodos que você pode usar para implementar a funcionalidade básica. No entanto, muitos desses métodos funcionam com o fuso horário local. Você também pode querer melhores recursos de análise para strings de data ou precisar trabalhar com datas imutáveis.
Neste tutorial, daremos a você uma breve visão geral de algumas das melhores e mais populares bibliotecas gratuitas de data e hora em JavaScript.
Moment.js
Moment.js é uma das bibliotecas mais utilizadas para trabalhar com data e hora em JavaScript. Sua enorme lista de recursos o torna muito atraente para os desenvolvedores. Você pode usar a biblioteca para analisar, manipular e formatar datas e horários.
Alguns dos recursos do Moment.js são:
- base de código robusta e madura que fornece muitos recursos úteis
- fácil análise e formatação de datas
- uso fácil de tempo relativo (como 10 horas atrás) ou hora no formato de calendário (como domingo às 18h ou ontem às 15h30)
- suporte integrado para vários locais
Uma desvantagem da biblioteca é seu tamanho relativamente grande, que pode afetar o tempo de carregamento da página. Isso é especialmente verdadeiro se você estiver usando apenas alguns recursos da biblioteca.
Outro ponto que devo mencionar é que o Moment.js não está mais sendo desenvolvido ativamente. Agora ele entrou em modo de manutenção.
Luxon
Luxon é uma alternativa moderna à biblioteca Moment.js. Essa biblioteca tem algumas vantagens importantes sobre o Moment.js. Ele oferece fuso horário nativo e suporte à internacionalização, o que ajuda a manter o tamanho do arquivo baixo. Ele tem menos de um terço do tamanho do Moment.js com cerca de 20k gzipado.
Algumas das características do Luxon são:
- acesso a recursos poderosos com uma API simples e de alto desempenho
- imutabilidade e encadeamento dos métodos para escrever código conciso
- suporte total para localização e internacionalização
- fácil análise e formatação de datas, intervalos e durações
- ótimo suporte para fusos horários e horário de verão para simplificar as coisas para os desenvolvedores
A biblioteca também fornece suporte completo para calendários semanais gregorianos e ISO. Ele também fornece suporte limitado para outros sistemas de calendário, como hebraico, indiano, islâmico e japonês.
dia.js
Você está procurando uma biblioteca leve para substituir o Moment.js? A biblioteca Day.js pode ser uma ótima alternativa neste caso. Uma das maiores vantagens da biblioteca é seu pequeno tamanho em torno de 2kb. A biblioteca funciona tanto no navegador quanto no Node.js.
Aqui estão alguns recursos úteis da biblioteca:
- uma API quase totalmente compatível com Moment.js
- suporte para imutabilidade — qualquer alteração no objeto Day.js retornará uma nova instância em vez de alterar a original
- capacidade de manipular o tempo adicionando ou subtraindo durações especificadas
- exibir o tempo relativamente usando o horário atual ou algum outro horário específico
- analisar qualquer string de data e hora
Você pode estender a funcionalidade principal da biblioteca com o uso de plug-ins. Existem muitos plugins disponíveis para adicionar recursos tão simples quanto calcular o dia do ano. Outros plug-ins ajudarão você a calcular o mínimo e o máximo de valores de data fornecidos.
Você também pode criar seus próprios plugins para a biblioteca se nenhum dos plugins oferecer o que você precisa.
data-fns
A biblioteca date-fns é outra ótima opção para quem procura uma biblioteca de datas JavaScript modular e moderna. A biblioteca é muito abrangente em sua cobertura de recursos e, ao mesmo tempo, fácil de usar.
O que a biblioteca lodash faz para arrays, a biblioteca date-fns faz para datas. Possui mais de 200 funções que podem ajudá-lo a realizar todos os tipos de tarefas. Aqui estão algumas de suas características interessantes:
- use a biblioteca para calcular a distância entre duas datas em palavras
- obter as datas mais recentes e mais antigas de uma matriz
- funções auxiliares para diferentes períodos de tempo, como auxiliares de minutos que ajudam você a obter os minutos, ir para o início ou fim de um minuto, arredondar para o minuto mais próximo, etc.
- ajudantes durante a semana irão ajudá-lo a obter a data para coisas como a próxima quinta-feira ou a terça-feira anterior
- pacotes adicionais como data-fns-tz para suporte a fusos horários
Funções auxiliares comuns na biblioteca podem ajudá-lo com a formatação das datas e verificar se uma data está no passado, presente ou futuro em comparação com outras datas.
O uso de sacudir a árvore também ajudará a otimizar o tamanho final do pacote para que você não carregue nada desnecessário.
crono
A biblioteca Chrono é diferente das outras que analisamos neste artigo no sentido de que não possui uma lista enorme de funções auxiliares para ajudá-lo a manipular datas. No entanto, ele serve a um propósito único. A biblioteca é um analisador de data de linguagem natural. Isso significa que ele pode extrair informações relacionadas a data e hora de qualquer texto e lidar com a maioria dos formatos de data/hora.
Você pode extrair todas essas informações de determinado texto simplesmente fazendo uma chamada para o parse()
e parseDate()
métodos. Também é possível fornecer contexto e informações adicionais para a análise correta de datas usando mais dois argumentos com o parseDate()
método.
Considere o seguinte exemplo:
1 |
const parsedDate = chrono.parseDate("Meet me next Tuesday at 4:00 PM"); |
2 |
// Outputs: Date Tue Jun 13 2023 16:00:00 GMT+0530 (India Standard Time)
|
3 |
console.log(parsedDate); |
4 |
|
5 |
|
6 |
const parsedDate = chrono.parseDate("Meet me next Tuesday at 4:00 PM", new Date(2023, 5, 25)); |
7 |
// Outputs: Date Tue Jul 04 2023 16:00:00 GMT+0530 (India Standard Time)
|
8 |
console.log(parsedDate); |
No primeiro exemplo, o parseDate()
O método examina a frase e encontra a data para mim na próxima terça-feira a partir da hora atual. No entanto, forneço algum contexto durante a segunda chamada para localizar a próxima terça-feira após 25 de junho de 2023. Nesse caso, surge a data de 04 de julho de 2023.
A biblioteca ainda permite que você defina seus próprios refinadores para personalizar os resultados ou adicionar sua própria lógica ao Chrono.
Pensamentos finais
O Date
objeto em JavaScript tem um conjunto decente de métodos que você pode usar para manipular datas. No entanto, você terá que confiar no uso de bibliotecas se estiver trabalhando extensivamente com fusos horários ou precisar usar muitas funções auxiliares, como as disponíveis com data-fns.
Da mesma forma, bibliotecas como Chrono podem ajudá-lo a fazer algo que a API nativa simplesmente não pode, como extrair dados de data e hora de informações textuais.
Espero que você tenha achado útil esta lista de bibliotecas populares, gratuitas e de código aberto em JavaScript.