JavaScript: Datas em JavaScript

Última atualização: 2026-10-13

O JavaScript usa o objeto Date para trabalhar com datas e horas. Pense nele como um relógio digital — mostra a hora atual, permite definir qualquer momento e pode calcular a diferença entre dois horários.

Métodos de data relacionados:getFullYear() toISOString() getMonth() getHours() Date.now() getDate() getDay() Date set

1. Criando e Manipulando Objetos Date

Quatro formas comuns de criar uma Date:

HTML
<script>
console.log(new Date());                      // Data e hora atuais
console.log(new Date("2025-06-19"));          // String de data
console.log(new Date(2025, 5, 19, 10, 30, 0)); // Ano, mês, dia, horas, minutos, segundos
console.log(new Date(1718764800000));         // Timestamp (milissegundos)
</script>

Pegadinha importante: Meses começam do zero! 0 = janeiro, 11 = dezembro. Em new Date(2025, 5, 19), o 5 significa junho, não maio. Essa é provavelmente a decisão de design mais criticada do objeto Date — sem discussão.

(2) Obtendo Data e Hora

Método Retorna Observação
getFullYear() Ano com 4 dígitos Não use getYear() — está obsoleto
getMonth() 0–11 Some 1 para o mês real
getDate() 1–31 Dia do mês
getDay() 0–6 0 = Domingo, não segunda!
getHours() 0–23 —
getMinutes() 0–59 —
getSeconds() 0–59 —

getDay() retorna o dia da semana, não o dia do mês — use getDate() para isso. Iniciantes frequentemente confundem.

(3) Definindo Data e Hora

Existe um conjunto correspondente de métodos set: setFullYear(), setMonth(), setDate(), setHours(), setMinutes(), setSeconds(). Valores ultrapassam automaticamente:

HTML
<script>
const d = new Date(2025, 5, 19);
d.setDate(32); // Vira automaticamente 2 de julho
console.log(d.toLocaleDateString());
</script>

(4) Formatando Datas

Método Exemplo de Saída
toLocaleDateString() "19/06/2025"
toLocaleTimeString() "10:30:00"
toLocaleString() "19/06/2025 10:30:00"

Esses métodos formatam automaticamente com base na localidade do navegador.

(5) Timestamps e Cálculo de Diferenças de Tempo

Um timestamp é a quantidade de milissegundos decorridos desde 1º de janeiro de 1970 00:00:00 UTC.

HTML
<script>
console.log(Date.now());           // Obtém o timestamp atual
console.log(new Date().getTime()); // Igual ao acima
</script>

A abordagem principal para calcular diferenças de tempo: subtrair dois timestamps para obter a diferença em milissegundos, depois converter:

HTML
<script>
const inicio = Date.now();
for (let i = 0; i < 1000000; i++) {} // Simula alguma operação
const fim = Date.now();
const diff = fim - inicio;           // Milissegundos
const diffSegundos = diff / 1000;    // Segundos
console.log("Tempo decorrido: " + diff + "ms (" + diffSegundos + " segundos)");
</script>

▶ Exemplo: Exibindo Data e Hora Atual

▶ Experimente

▶ Exemplo: Detalhes das Informações de Data

▶ Experimente

▶ Exemplo: Timer de Contagem Regressiva

▶ Experimente

▶ Exemplo: Calculadora de Diferença de Datas

▶ Experimente

Métodos de data relacionados:getFullYear() toISOString() getMonth() getHours() Date.now() getDate() getDay() Date set

❓ Perguntas Frequentes

P Por que getMonth() precisa somar 1?
R Porque a classe Date do Java foi projetada assim, e o JavaScript herdou essa "tradição." Todo mundo concorda que é um design bobo, mas não pode ser alterado — código demais depende desse comportamento. É só memorizar.
P Existe diferença entre new Date("2025-06-19") e new Date(2025, 5, 19)?
R Sim. Datas em string são interpretadas como UTC à meia-noite, enquanto a forma com parâmetros usa horário local. A hora exibida pode diferir em 3 horas (para UTC-3). Se você só se importa com a data e não com a hora, a forma com parâmetros é mais segura.
P Como calcular a idade de alguém?
R Subtraia o ano de nascimento do ano atual, depois verifique se o aniversário já passou este ano: se o mês atual for menor que o mês de nascimento, ou se os meses forem iguais mas o dia atual for menor que o dia de nascimento, subtraia 1 da idade.

📖 Resumo


📝 Exercícios

  1. Escreva uma função formatarData(data) que retorne uma string no formato "AAAA-MM-DD (DiaDaSemana)". Certifique-se de que meses e dias tenham zero à esquerda.
  2. Escreva uma função obterIdade(aniversario) que receba uma string de data (ex: "2000-03-15") e retorne a idade atual em anos completos.
  3. Construa um recurso de "tempo atrás": dada uma data passada, exiba "X anos, X meses, X dias atrás" ou "X dias atrás" ou "X horas atrás" — escolhendo automaticamente o formato apropriado com base na diferença de tempo.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%