Trabalhando com datas e horas em JavaScript: guia completo para Node.js

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com datas e horas em JavaScript (Node.js): do básico às técnicas avançadas



Trabalhar com datas e horas é uma das tarefas mais comuns no desenvolvimento backend. Seja para registro de eventos, cálculo de prazos, geração de relatórios ou integração com APIs, saber lidar corretamente com timestamps é uma habilidade crítica. Neste artigo, abordaremos todos os aspectos essenciais do trabalho com datas no ambiente Node.js: desde o objeto nativo Date até bibliotecas populares que facilitam a vida do desenvolvedor.



1. O objeto nativo Date: fundamentos e armadilhas



Em JavaScript, o objeto nativo Date é responsável pelo trabalho com datas. Ele fornece métodos básicos para criar, ler e manipular datas. No entanto, possui algumas peculiaridades importantes que você precisa conhecer.



Criação de um objeto Date

A maneira mais simples de obter a data e hora atuais:

const now = new Date();console.log(now); // 2025-03-20T14:30:00.000Z (exemplo)


Você pode criar uma data a partir de uma string, timestamp (milissegundos desde 1º de janeiro de 1970) ou definindo os componentes manualmente:

// A partir de uma string (ISO 8601)const dateFromString = new Date("2025-12-25T10:00:00Z");

// A partir de um timestampconst dateFromTimestamp = new Date(1735048800000);

// A partir de componentes (ano, mês (0-11), dia, hora, minuto, segundo, milissegundo)const dateFromParts = new Date(2025, 11, 25, 10, 0, 0, 0); // 25 de dezembro de 2025 10:00:00console.log(dateFromParts); // 2025-12-25T07:00:00.000Z (depende do fuso horário)


Importante: Os meses em JavaScript são numerados a partir de 0 (janeiro é 0, dezembro é 11). Esta é uma causa frequente de erros.



Obtendo componentes da data

O objeto Date fornece métodos para obter componentes individuais:

const date = new Date();console.log(date.getFullYear());    // 2025console.log(date.getMonth());       // 2 (março, pois a contagem começa em 0)console.log(date.getDate());        // 20console.log(date.getDay());         // 4 (quinta-feira, 0 - domingo)console.log(date.getHours());       // 17console.log(date.getMinutes());     // 45console.log(date.getSeconds());     // 12console.log(date.getMilliseconds());// 345console.log(date.getTime());        // 1742474712345 (timestamp)


Observe: todos esses métodos retornam valores no fuso horário local do servidor. Para trabalhar com UTC, use os métodos com o prefixo getUTC... (por exemplo, getUTCFullYear()).



Manipulação de datas

A alteração de datas é feita através dos métodos set. Eles modificam o objeto original:

const date = new Date();date.setFullYear(2026);date.setMonth(0); // janeirodate.setDate(15);console.log(date); // 2026-01-15T... (os demais componentes são preservados)


Armadilha: Os métodos set ajustam a data automaticamente. Por exemplo, se você definir 32 de janeiro, a data se tornará 1º de fevereiro. Isso pode ser tanto conveniente quanto inesperado.



2. Formatação de datas e exibição no formato desejado



O método nativo toLocaleDateString() permite exibir a data no formato adotado por uma localidade específica:

const date = new Date(2025, 11, 25);console.log(date.toLocaleDateString('ru-RU')); // 25.12.2025console.log(date.toLocaleDateString('en-US')); // 12/25/2025console.log(date.toLocaleDateString('de-DE')); // 25.12.2025


Para formatação mais flexível, você pode usar Intl.DateTimeFormat:

const formatter = new Intl.DateTimeFormat('ru-RU', {  year: 'numeric',  month: 'long',  day: 'numeric',  weekday: 'long',  hour: '2-digit',  minute: '2-digit'});console.log(formatter.format(new Date())); // "quinta-feira, 20 de março de 2025, 17:45"


No entanto, para formatos complexos (por exemplo, "2025-03-20T14:30:00+03:00") ou modelos personalizados, é melhor usar bibliotecas (sobre as quais falaremos a seguir).



Blogs

Book Recommendations