Moment.js / Day.js para JavaScript (Node.js): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é esta biblioteca e para que serve

\n\n

Moment.js e Day.js são duas bibliotecas poderosas para JavaScript, projetadas para trabalhar com datas e horas. Elas resolvem um problema fundamental: o objeto nativo Date em JavaScript é extremamente inconveniente para tarefas do dia a dia. Ele não suporta formatação, cálculos complexos com datas, análise de strings em diferentes formatos e trabalho com fusos horários sem escrever dezenas de linhas de código.

\n\n

Moment.js foi por muito tempo o padrão de facto, mas agora é considerado "legado" — seu desenvolvimento foi congelado e não é recomendado para novos projetos devido ao seu grande tamanho (cerca de 300 KB). Para substituí-lo, surgiu o Day.js — uma biblioteca leve (apenas 2 KB) e rápida, com uma API praticamente idêntica. O Day.js é totalmente compatível com o Moment.js na maioria das operações básicas, permitindo uma migração fácil.

\n\n

Ambas as bibliotecas oferecem:

\n
    \n
  • Análise de datas a partir de strings em qualquer formato
  • \n
  • Formatação de datas em strings legíveis
  • \n
  • Manipulações (adição/subtração de dias, meses, anos)
  • \n
  • Comparação de datas (antes, depois, entre)
  • \n
  • Trabalho com fusos horários (através de plugins)
  • \n
  • Localização (suporte a diferentes idiomas e formatos regionais)
  • \n
\n\n

Neste artigo, vamos nos concentrar no Day.js como uma alternativa moderna, mas todos os exemplos funcionarão com o Moment.js com alterações mínimas.

\n\n

Instalação

\n\n

A instalação para Node.js é feita via npm ou yarn. Para o navegador, você pode usar um CDN.

\n\n

Instalação do Day.js

\n
# Via npm\nnpm install dayjs\n\n# Via yarn\nyarn add dayjs
\n\n

Instalação do Moment.js

\n
npm install moment\n\n# ou\nyarn add moment
\n\n

Importação no projeto

\n
// Day.js\nconst dayjs = require('dayjs');\n\n// Moment.js\nconst moment = require('moment');
\n\n

Início rápido com exemplo de código

\n\n

Após a instalação, você pode começar a trabalhar com datas imediatamente. Aqui está um exemplo mínimo que demonstra as principais funcionalidades:

\n\n
const dayjs = require('dayjs');\n\n// Data e hora atuais\nconst now = dayjs();\nconsole.log('Agora:', now.format('DD.MM.YYYY HH:mm:ss'));\n\n// Análise de string\nconst date = dayjs('2024-03-15');\nconsole.log('Análise:', date.format('DD.MM.YYYY'));\n\n// Manipulações\nconst nextWeek = dayjs().add(7, 'day');\nconsole.log('Daqui a uma semana:', nextWeek.format('DD.MM.YYYY'));\n\n// Diferença entre datas\nconst diff = nextWeek.diff(now, 'day');\nconsole.log('Diferença em dias:', diff);\n\n// Comparação\nconsole.log('Hoje é antes?', now.isBefore(nextWeek)); // true
\n\n

Principais métodos/funções

\n\n

1. dayjs() — criação de objeto de data

\n

O que faz: Cria um objeto Day.js representando um momento específico no tempo. Sem argumentos, retorna a data e hora atuais.

\n

Parâmetros:

\n
    \n
  • date (opcional) — string, número (timestamp), objeto Date ou outro objeto Day.js
  • \n
  • format (opcional) — string de formato para análise, se date for uma string
  • \n
\n

Exemplo de código funcional:

\n
// Data atual\nconst now = dayjs();\n\n// A partir de string\nconst fromString = dayjs('2024-12-31');\n\n// A partir de timestamp (milissegundos)\nconst fromTimestamp = dayjs(1704067200000);\n\n// A partir de objeto Date\nconst fromDate = dayjs(new Date(2024, 0, 1)); // 1 de janeiro de 2024\n\n// Com formato especificado\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\n

2. format() — formatação de data

\n

O que faz: Converte o objeto de data em uma string de acordo com o formato

Recommendations