O que é esta biblioteca e para que serve
\n\nMoment.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.
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\nAmbas 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
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\nInstalação
\n\nA instalação para Node.js é feita via npm ou yarn. Para o navegador, você pode usar um CDN.
\n\nInstalação do Day.js
\n# Via npm\nnpm install dayjs\n\n# Via yarn\nyarn add dayjs\n\nInstalação do Moment.js
\nnpm install moment\n\n# ou\nyarn add moment\n\nImportação no projeto
\n// Day.js\nconst dayjs = require('dayjs');\n\n// Moment.js\nconst moment = require('moment');\n\nInício rápido com exemplo de código
\n\nApó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\nconst 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\nPrincipais métodos/funções
\n\n1. dayjs() — criação de objeto de data
\nO que faz: Cria um objeto Day.js representando um momento específico no tempo. Sem argumentos, retorna a data e hora atuais.
\nParâ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
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\n2. format() — formatação de data
\nO que faz: Converte o objeto de data em uma string de acordo com o formato
Também na biblioteca
Trabalho com XML em PHP: parsing, criação e processamento de dados
TypeStack/routing-controllers para TypeScript: guia completo com exemplos
Swagger/OpenAPI para C# (.NET): Geração e documentação de API
Trabalho com Excel em PHP: bibliotecas PhpSpreadsheet, PhpOffice e geração de XLSX