moment

Manipular datas com Moment no Node.js

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:

moment1

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);
moment2

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

https://momentjs.com/docs

Este conteúdo te ajudou de alguma forma?

Usamos cookies para lhe proporcionar a melhor experiência possível no nosso site. Ao continuar a usar este site, você concorda com o uso de cookies.
Ok
Privacy Policy