O que é Moment.js?

Moment.js é uma biblioteca JavaScript amplamente utilizada para analisar, validar, manipular e formatar datas. Antes que alternativas modernas surgissem, o Moment.js era o padrão de fato para o tratamento de datas em aplicações JavaScript. Ele fornece uma API limpa e encadeável que torna o trabalho com datas intuitivo e direto. Embora existam bibliotecas mais recentes como date-fns e Luxon, o Moment.js continua amplamente usado em bases de código legadas e ainda é mantido ativamente para correções de bugs. Entender o Moment.js é essencial para desenvolvedores que trabalham com projetos existentes que dependem dele.

Por que usar uma biblioteca de manipulação de datas?

O objeto nativo Date do JavaScript é notoriamente difícil de usar. Ele tem comportamento inconsistente entre navegadores, indexação de meses confusa (0-11 ao invés de 1-12), opções limitadas de formatação e nenhum suporte nativo a fusos horários. Bibliotecas de datas como o Moment.js resolvem esses problemas ao fornecer uma API consistente e bem documentada. Elas lidam automaticamente com casos extremos como transições de horário de verão, anos bissextos e formatação específica de localidade, poupando os desenvolvedores de escrever lógica de datas propensa a erros do zero.

Descrição da ferramenta

O Moment.js Playground é um ambiente interativo baseado no navegador para experimentar com a biblioteca Moment.js. Escreva e execute código JavaScript diretamente no editor com acesso total ao Moment.js e ao Moment Timezone. O playground executa automaticamente seu código enquanto você digita (com debounce) e exibe toda a saída do console em um painel estilo terminal abaixo. É perfeito para aprender Moment.js, testar strings de formatação de datas, depurar cálculos de datas e prototipar lógica relacionada ao tempo sem configurar um ambiente de desenvolvimento.

Exemplos

Formate a data atual:

const now = moment();
console.log(now.format("MMMM Do, YYYY"));
// Saída: 30 de dezembro de 2025

console.log(now.format("dddd, h:mm A"));
// Saída: segunda-feira, 3:45 PM

Analise diferentes formatos de data:

const date1 = moment("2025-12-25", "YYYY-MM-DD");
const date2 = moment("25/12/2025", "DD/MM/YYYY");
const date3 = moment("Dec 25, 2025", "MMM D, YYYY");

console.log(date1.format("dddd")); // quinta-feira
console.log(date2.isValid()); // true
console.log(date3.month()); // 11 (indexado a 0)

Calcule tempo relativo:

const past = moment().subtract(3, "days");
const future = moment().add(2, "weeks");

console.log(past.fromNow()); // há 3 dias
console.log(future.fromNow()); // em 14 dias
console.log(past.from(future)); // há 17 dias

Aritmética de datas:

const date = moment("2025-01-15");

const nextMonth = date.clone().add(1, "month");
const lastWeek = date.clone().subtract(1, "week");
const endOfMonth = date.clone().endOf("month");

console.log(nextMonth.format("YYYY-MM-DD")); // 2025-02-15
console.log(lastWeek.format("YYYY-MM-DD")); // 2025-01-08
console.log(endOfMonth.format("YYYY-MM-DD")); // 2025-01-31

Trabalhe com durações:

const start = moment("2025-01-01");
const end = moment("2025-12-31");

const duration = moment.duration(end.diff(start));

console.log(duration.asDays() + " days"); // 364 dias
console.log(duration.asWeeks() + " weeks"); // 52 semanas
console.log(duration.humanize()); // um ano

Compare datas:

const date1 = moment("2025-06-15");
const date2 = moment("2025-12-25");

console.log(date1.isBefore(date2)); // true
console.log(date1.isAfter(date2)); // false
console.log(date1.isSame(date2, "year")); // true
console.log(date1.isBetween("2025-01-01", "2025-08-01")); // true

Trabalhe com fusos horários:

const now = moment();

console.log(now.tz("America/New_York").format("h:mm A z"));
console.log(now.tz("Europe/London").format("h:mm A z"));
console.log(now.tz("Asia/Tokyo").format("h:mm A z"));

Recursos

  • Biblioteca completa Moment.js: Acesse todas as funções do Moment.js, incluindo análise, formatação, manipulação e comparação
  • Suporte a fusos horários: Moment Timezone está pré-carregado para trabalhar com fusos horários em todo o mundo
  • Execução de código ao vivo: O código é executado automaticamente enquanto você digita, com debounce inteligente
  • Terminal embutido: Visualize a saída do console instantaneamente sem abrir as ferramentas de desenvolvedor do navegador
  • Realce de sintaxe: Realce de sintaxe JavaScript para melhor legibilidade do código
  • Tratamento de erros: Erros em tempo de execução são exibidos claramente na saída do terminal

Casos de uso

  • Aprendendo Moment.js: Experimente a API e veja resultados imediatamente sem configurar um projeto
  • Teste de strings de formatação: Experimente diferentes tokens de formatação para obter a saída de data exata que você precisa
  • Depuração de cálculos de datas: Teste aritmética de datas complexas antes de implementá-las em sua aplicação
  • Conversões de fusos horários: Converta rapidamente horários entre diferentes fusos horários
  • Manutenção de código legado: Teste trechos de código Moment.js ao manter aplicações existentes

Tokens de Formatação Comuns

Token Descrição Exemplo
YYYY ano de 4 dígitos 2025
YY ano de 2 dígitos 25
MM mês de 2 dígitos 01-12
MMM nome abreviado do mês Jan, Feb
MMMM nome completo do mês January
DD dia de 2 dígitos 01-31
Do dia com ordinal 1st, 2nd, 3rd
dddd nome completo do dia da semana Monday
ddd nome abreviado do dia da semana Mon
HH hora em formato 24h 00-23
hh hora em formato 12h 01-12
mm minutos 00-59
ss segundos 00-59
A AM/PM (maiúsculas) AM, PM
a am/pm (minúsculas) am, pm
z abreviação do fuso horário EST, PST
Z deslocamento do fuso horário +05:00

Referência de Métodos Comuns

Método Descrição Exemplo
moment() Cria o momento atual moment()
format(string) Formata para string moment().format("YYYY-MM-DD")
add(n, unit) Adiciona tempo moment().add(7, "days")
subtract(n, unit) Subtrai tempo moment().subtract(1, "month")
startOf(unit) Início da unidade moment().startOf("week")
endOf(unit) Fim da unidade moment().endOf("month")
fromNow() Tempo relativo moment("2025-01-01").fromNow()
diff(moment) Diferença momentA.diff(momentB, "days")
isBefore(moment) É anterior a momentA.isBefore(momentB)
isAfter(moment) É posterior a momentA.isAfter(momentB)
isSame(moment, unit) É o mesmo momentA.isSame(momentB, "month")
isValid() Verifica validade moment("invalid").isValid()
clone() Cria cópia moment().clone()
tz(zone) Converte fuso horário moment().tz("America/New_York")

Unidades de Tempo

Moment.js suporta estas unidades de tempo para as operações add, subtract, startOf, endOf e diff:

  • years / y
  • quarters / Q
  • months / M
  • weeks / w
  • days / d
  • hours / h
  • minutes / m
  • seconds / s
  • milliseconds / ms