Veja nesse artigo
Introdução
O moment é uma biblioteca que pode ser utilizada no Node.js para a manipulação de datas.
Em todo sistema, uma hora ou outra será necessário manipular datas, seja vindas do banco de dados, ou recebida por um formulário ou por outra maneira.
E essa manipulação pode ser feita de diversas formas, por depende bastante de como o dado pode chegar até o sistema, e do que precisa ser feito com ele.
Sobre o Moment
É uma biblioteca que foi criada a cerca de dois anos e atualmente está na versão 2.29.1 que foi lançada há 2 meses.
O que impressiona dessa biblioteca é a quantidade média de downloads semanais, chegando a 15 milhões.
Isso mostra ser uma biblioteca consolidada e muito utilizada em mercado.
A biblioteca conta com funções para formatação de data, parseamento, manipulação, consulta, tradução, customização e entre outras.
Porque usar uma biblioteca para manipular data
Utilizar uma biblioteca para este fim, pode aumentar a produtividade do desenvolvimento, visto que é mais fácil de escrever e o código fica mais conciso.
Também aumenta a produtividade por ter essas diversas funções todas prontas para uso, e com isso não será necessário criar nada novo, somente adaptar caso precise.
Todas as funções que já estão prontas, foram e são validadas a todo momento pela quantidade grande de usuários, isso garante que as funções dificilmente vai dar problema, evitando assim bugs aparecerem no sistema.
Como utilizar no projeto
Para instalar a biblioteca no projeto, pode fazer utilizando NPM ou Yarn:
npm install moment
ou
yarn add moment
E realizar a importação:
const moment = require("moment");
Obter a data atual
Para obter a data atual com o moment, basta utilizar a função padrão moment()
, e com isso um objeto dele será retornado, a partir dele pode realizar a manipulação que desejar. No exemplo abaixo será mostrado no console.
let data = moment();
console.log(data);
E isso irá mostrar o seguinte resultado no console:

Repare que esta data veio como um objeto do moment, que é o utilizado para realizar a manipulação, caso queira obter a string da data atual, precisa passar o format()
:
let data = moment().format();
console.log(data);

Formatar no padrão brasileiro
Para exibição da data na tela de maneira agradável para o usuário, é necessário realizar a formatação da data para o padrão brasileiro.
Isso é possível fazer utilizando o moment, passando a configuração de formatação da data dentro da função format.
let databrasil = moment().format("DD/MM/YYYY");
console.log(databrasil);
O código acima irá mostrar a data no padrão dia/mês/ano com a data atual. Exemplo 27/11/2020.
Também é possível mostrar o tempo, como horas, minutos e segundos, para isso o código fica:
let databrasilminutos = moment().format("DD/MM/YYYY hh:mm:ss");
console.log(databrasilminutos); //será mostrado 27/11/2020 22:00:00
Subtrair e adicionar dias a uma data
Outra função interessante do moment, é trabalhar facilmente com o tempo. É comum precisar adicionar e subtrair dias em uma data.
Por exemplo, caso queira implementar um filtro padrão para o relatório do sistema onde sempre vai pegar os dados dos últimos 7 dias.
Para implementar isso, sempre que o usuário solicitar o relatório, pode pegar a data atual e subtrair 7 dias dessa data, e assim colocar essas duas datas na consulta formando o filtro padrão.
Para subtrair dias de uma data, é necessário utilizar a função subtract()
e passar como padrâmetro a quantidade e a unidade que será subtraída, por exemplo:
let subtrair = moment().subtract(7, 'days').format("DD/MM/YYYY hh:mm:ss");
console.log(subtrairDias);
Com isso será subtraído 7 dias a partir da data atual, e o retorno ainda está sendo formatado para o padrão brasileiro.
Também é possível adicionar dias a uma data, para fazer isso da pra utilizar a função add(), de forma similar ao subtract, por exemplo:
let adicionar = moment().add(10, 'days').format("DD/MM/YYYY hh:mm:ss");
console.log(adicionar);
E assim será adicionado 10 dias a data atual.
Obter data específica
Nos exemplos anteriores, todos foram utilizando a data atual, porém pode ser necessário passar uma data específica para que seja formatada, e para isso pode passar a data pata dentro da função moment()
.
let data = moment("2020-11-20").format("DD/MM/YYYY hh:mm:ss");
console.log(data);
Com isso será retornado a data 20/11/2020 12:00:00.
Vídeo sobre o assunto
Gravei um vídeo completo sobre essa biblioteca que ajuda muito na manipulação das datas:
Conclusão
Utilizar bibiloteca para trabalhar com datas pode ser muito interessante, ainda mais com uma biblioteca já consolidada e com diversas funções, pode dar muito mais produtividade no dia a dia. Até o próximo post :).
Código fonte
Todo o código fonte dos exemplos mostrados estão no meu CodeSandbox
Para ver outros canais onde o posto conteúdo, meu Github e também cursos, veja os Links do Programando Soluções.
Referências
https://www.npmjs.com/package/moment