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.
1. Criando e Manipulando Objetos Date
Quatro formas comuns de criar uma Date:
<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:
<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.
<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:
<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❓ Perguntas Frequentes
getMonth() precisa somar 1?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.new Date("2025-06-19") e new Date(2025, 5, 19)?📖 Resumo
- Crie objetos Date com
new Date(),new Date(2024, 0, 1), ounew Date("2024-01-01") - Métodos get:
getFullYear/getMonth/getDate/getDay/getHours/getMinutes/getSeconds - Métodos set modificam o objeto Date diretamente
- Formate datas com
toLocaleDateString(),toISOString(), ou concatenação manual - Timestamps são milissegundos; use
Date.now()para o timestamp atual
📝 Exercícios
- 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. - Escreva uma função
obterIdade(aniversario)que receba uma string de data (ex: "2000-03-15") e retorne a idade atual em anos completos. - 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.