- 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.
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.
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ígitosMM: meuDD: dia do mêshhoHH: hora (formato 12h ou 24h)mm: minutosss: segundosa: manhã/tarde
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.
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.
Tabela de conteúdos
- O que é Moment.js e por que ele se tornou tão popular?
- Principais recursos e benefícios do Moment.js
- Como começar a usar Moment.js em seu projeto
- Criação de datas: diferentes maneiras e exemplos práticos
- Formatação e exibição de datas
- Manipulação de data: adição, subtração e comparação
- Comparação de datas: verifique se uma data está entre outras
- Manipulando fusos horários e datas internacionais
- Exemplos de uso principal e dicas avançadas
- Personalização avançada: formatos, tokens e análise estrita