Moment.js: Explicação completa e exemplos práticos da biblioteca de datas

Última atualização: 28 de julho de 2025
  • O Moment.js simplifica o gerenciamento de data e hora em JavaScript com uma API limpa e poderosa.
  • Permite analisar, manipular, validar e exibir datas em qualquer formato e fuso horário.
  • Ele se integra facilmente a projetos e é compatível com plugins e bibliotecas externas, como o IronPDF.

moment.js

Trabalhar com datas e horas em JavaScript pode ser uma verdadeira odisseia para desenvolvedores de aplicativos web.Felizmente, existem ferramentas como o Moment.js que simplificam muito esse processo, facilitando tudo, desde a formatação básica de datas até operações complexas de manipulação e validação. Se você já ficou frustrado tentando converter, comparar ou exibir datas corretamente em seus projetos, o Moment.js provavelmente está entre seus principais aliados, ou pelo menos você deveria considerá-lo.

Neste artigo contarei tudo o que você precisa saber sobre Moment.js.: desde seus principais recursos e truques menos conhecidos, até casos práticos e sua integração com outras bibliotecas, incluindo uma explicação clara de sua sintaxe e das tarefas que pode resolver. Também veremos suas limitações, atualizações recentes e as alternativas disponíveis se você estiver procurando por algo mais moderno.

O que é Moment.js e por que ele se tornou tão popular?

Moment.js é uma biblioteca JavaScript projetada para tornar o trabalho com datas e horas uma tarefa simples.Permite criar, analisar, manipular e exibir datas em qualquer formato imaginável com uma sintaxe simples e poderosa. Esta biblioteca tem sido, há anos, A solução líder da comunidade para superar as limitações do objeto Date() nativo do JavaScript.

O núcleo do Moment.js gira em torno do objeto momento(), capaz de construir datas a partir de praticamente qualquer entrada válida: strings de texto, objetos Date, carimbos de data/hora ou até mesmo argumentos numéricos. Isso o torna extremamente flexível e útil em todos os tipos de projetos, desde pequenos scripts até aplicativos empresariais que gerenciam fusos horários internacionais ou registros históricos.

O que o tornou um sucesso? Sua confiabilidade, facilidade de uso e a variedade de ferramentas e plugins que o acompanham.. Mesmo quando o projeto entrou em modo de manutenção, O Moment.js mantém uma grande base de usuários e ampla documentação., reforçando sua posição como a solução ideal para datas em JavaScript e Node.js.

  Programação imperativa: O que é, vantagens, diferenças e exemplos práticos

Principais recursos e benefícios do Moment.js

  • API simples e intuitivaUm dos maiores pontos fortes do Moment.js é sua sintaxe clara. Você pode realizar operações simples, como obter a data atual ou converter uma string para um formato específico, ou cálculos e validações complexas em apenas algumas linhas.
  • Análise e formatação flexíveisAnalisar sequências de datas de quase qualquer formato e convertê-las para a saída desejada nunca foi tão fácil. O Moment.js torna rápido e fácil formatar datas em apresentações personalizadas..
  • Manipulação de data: Adicionar ou subtrair dias, meses, anos, semanas ou qualquer outra unidade de tempo é tão simples quanto usar os métodos adicionar() y subtrair()Isso é muito útil quando você precisa trabalhar com datas relativas, datas de vencimento ou prazos que variam dinamicamente.
  • Validação robusta: Se você precisa verificar se uma data é válida ou existe (por exemplo, 30 de fevereiro), o Moment.js facilita para você. O método é válido() Ele é capaz de detectar erros sutis no formato ou na lógica das datas.
  • Suporte para fusos horários e localização:Obrigado ao seu plugin fuso horárioÉ muito fácil converter datas entre diferentes fusos horários. Você também pode exibir datas adaptadas ao idioma do usuário e às convenções regionais, o que é fundamental em aplicativos globais.
  • Ecossistema de plugins:Além da biblioteca principal, há um ecossistema de plugins para estender sua funcionalidade (calendário, compatibilidade com outros frameworks, formatos exóticos...).

Como começar a usar Moment.js em seu projeto

A instalação é muito simplesVocê pode incluir Moment.js em seu HTML com uma única linha:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

Se você estiver trabalhando com Node.js ou um ambiente de desenvolvimento moderno, é comum instalá-lo usando npm ou yarn:

npm install moment

Feito isso, você pode importar o Moment.js de acordo com a sintaxe que você usa:

// Versión CommonJS
var moment = require('moment');
moment().format();

// ES6
import moment from 'moment';
moment().format();

Criação de datas: diferentes maneiras e exemplos práticos

Crie datas facilmente

Para obter a data e hora atuais, simplesmente use moment():

console.log(moment()); // Devuelve la fecha actual en formato ISO8601

Você pode construir uma data específica passando argumentos:

moment("2022-10-14"); // Crea el 14 de octubre de 2022

Você também pode começar a partir de uma determinada string e formato, mesmo no modo estrito:

moment("25/12/1995", "DD/MM/YYYY", true); // Analiza y comprueba el formato

Você tem um objeto Date nativo?

const fechaJS = new Date();
const miFecha = moment(fechaJS);

Formatação e exibição de datas

Moment.js permite que você exiba datas em qualquer formato imaginável. Por exemplo, para exibir a data atual como dia/mês/ano:

moment().format('DD/MM/YYYY');

Se você quiser uma corrente mais humanizada, você pode usar:

moment().format('MMMM Do YYYY, h:mm:ss a'); // Ejemplo: "marzo 8º 2024, 3:21:10 pm"

Alguns tokens úteis para formatação:

  • YYYY: Ano de 4 dígitos
  • MM: meu
  • DD: dia do mês
  • hh o HH: hora (formato 12h ou 24h)
  • mm: minutos
  • ss: segundos
  • a: manhã/tarde
  Como adicionar comentários a arquivos JSON: métodos, exemplos e práticas recomendadas

Por exemplo, para exibir apenas a hora:

moment().format('HH:mm:ss');

Formatação avançada com tokens e suporte regional

Moment.js suporta vários formatos localizados e traduçõesÉ possível alternar os idiomas rapidamente para exibir os nomes dos meses e dias em outro idioma:

moment.locale('es'); // Cambia a español
document.write(moment().format('LLLL'));
// Ejemplo: martes, 8 de marzo de 2024 15:21

Manipulação de data: adição, subtração e comparação

Trabalhar com datas relativas é um dos pontos fortes do Moment.js.

  • Adicione dias, meses ou anos:
    moment().add(3, 'days').format('DD/MM/YYYY');
  • Subtrair unidades:
    moment().subtract(2, 'months').format('DD/MM/YYYY');
  • Início e fim dos períodos:
    moment().startOf('month').format('DD/MM/YYYY'); // Primer día del mes
    moment().endOf('month').format('DD/MM/YYYY');   // Último día del mes

Validar datas e detectar erros

Antes de operar com datas é vital validar se elas estão corretas:

moment('2024-02-30', 'YYYY-MM-DD').isValid(); // false, el 30 de febrero no existe

Este Evite bugs inesperados em aplicativos que recebem dados do usuário.

Comparação de datas: verifique se uma data está entre outras

O Moment.js inclui vários métodos para comparar datas:

  • éAntes(): Verifica se uma data é anterior a outra.
  • éDepois(): Verifica se uma data é posterior.
  • estáEntre(): Indica se uma data está entre duas datas fornecidas.
let hoy = moment();
let ayer = moment().subtract(1, 'days');
console.log(hoy.isAfter(ayer)); // true

Manipulando fusos horários e datas internacionais

Quando você trabalha com usuários em diferentes partes do mundo, os fusos horários podem se tornar uma armadilha.. Com o plugin fuso horário Você pode converter datas entre regiões facilmente:

const moment = require('moment-timezone');
const fechaUTC = moment('2024-05-25');
const fechaNY = fechaUTC.tz('America/New_York').format('YYYY-MM-DD HH:mm:ss');
console.log(fechaNY);
// Ejemplo: "2024-05-24 20:00:00"

Além disso, o Moment.js é capaz de apresentar datas adaptadas às configurações de localidade do usuário., mostrando nomes de meses e dias traduzidos corretamente.

Exemplos de uso principal e dicas avançadas

Obtenha diferenças entre datas

Você pode calcular o tempo decorrido entre duas datas em unidades diferentes:

let inicio = moment('2024-01-01');
let fin = moment('2024-03-08');
let dias = fin.diff(inicio, 'days'); // Devuelve el número de días entre ambas

Datas relativas e tempos humanos

Moment.js é ótimo para exibir mensagens como "3 dias atrás" ou "em 5 horas":

moment().subtract(3, 'days').fromNow(); // "hace 3 días"
moment().add(2, 'hours').fromNow();    // "en 2 horas"

Calendário humano

A função calendário() Ele exibe datas relativas como “ontem às 17:00” ou “amanhã às 9:00”, o que o torna muito útil para aplicativos de calendário.

moment().subtract(1, 'days').calendar(); // "Ayer a las..."
moment().add(3, 'days').calendar();     // "Próximo martes a las..."

Suporte para saltos anuais e dias especiais

Você quer saber se um ano é bissexto?

moment([2024]).isLeapYear(); // true

O método isLeapYear () lhe dá a resposta diretamente.

  Como adicionar comentários a arquivos JSON: métodos, exemplos e práticas recomendadas

Personalização avançada: formatos, tokens e análise estrita

Moment.js permite que você trabalhe com strings e tokens personalizados para criar ou ler datas em uma infinidade de formatos. Além disso, o modo estrito requer correspondências exatas, evitando erros sutis e surpresas indesejadas.

Por exemplo, para analisar uma data no formato "dia/mês/ano":

moment('12/03/2023', 'DD/MM/YYYY', true);

Lista de tokens comuns e exemplos

  • Ano: AAAA (2024), AA (24), A (-500)
  • mês: MM (01 – 12), MMM (janeiro), MMMM (janeiro)
  • Dia: DD (01 – 31), C (1º – 31º)
  • Tempo: HH (00 – 23), hh (01 – 12), mm (minutos), ss (segundos)
  • Fuso horário: Z, ZZ

Esses tokens podem ser combinados para criar saídas totalmente personalizadas. Consulte a documentação para a lista completa e casos especiais.