Objeto Date - Datas e Tempo em JavaScript

Neste tutorial de nossa seção Objetos nativos do JavaScript, vamos conhecer o objeto Date, que vai nos fornecer uma série de métodos para trabalharmos com datas, horários e tudo que se refere a tempo, em JS.

Datas e Tempo em Programação


Já entrou em um internet banking, e notou que tinha um certo tempo limite para você ficar lá, antes dele se desconectar sozinho? É até uma medida de segurança.

Já preencheu a data em algum formulário? Alguns meses tem 31 dias, outros 30...fevereiro tem 29 ou 28.

E medidas de velocidade? Velocidade de download, velocidade de upload, velocidade da sua conexão...tem vários sites com esses tipos de serviço.

E aquelas contagens regressiva? 10 horas, 49 minutos e 10 segundos pra acabar a promoção...3 dias, 2 horas e 1 min para iniciar as vendas? Bem comum também, não é?

Pois é, trabalhar com datas, ou tempo de uma maneira geral, é algo muito corriqueiro e importante no mundo da programação, principalmente o JavaScript que serve para lidar diretamente com usuários da internet.

Vamos conhecer alguns métodos que podem nos ajudar, caso seja necessário.

Métodos do Objeto Date do JavaScript

Antes de te explicarmos os métodos, precisamos te relembrar do famoso Horário do Meridiano de Greenwich (GMT - Greenwich Media Time), que estudamos na escola, nas aulas de Geografia. Lembra?

Em programação JavaScript, vamos usar dois tipos de 'tempo padrão'. O local (da sua cidade) e o UTC (Universal Time Coordinated), que é o de Greenwich.

Para usarmos uma método de nome metodo, basta instanciarmos um objeto do tipo Date():
var data = new Date()

E fazer: data.metodo()

Dia, Mês e Ano


  1. getDate() ou Date.getUTCDate() - Retorna um número de 1 até 31, informando o dia do mês, tempo local ou UTC
  2. getDay() ou getUTCDay() - Retorna um inteiro de 0 até 6, onde 0 representa Domingo e 6 Sábado.
  3. getMonth() ou getUTCMonth() - Retorna um número de 0 até 11, onde 0 representa Janeiro e 11 Dezembro
  4. getFullYear() ou getUTCFullYear() - Retorna um número de 4 dígitos, com o ano atual

Assim, um script que fornece o dia da semana, dia do mês, mês e ano, seria:
function exibe()
{
 var d = new Date();
 document.write("Dia da semana: "+(d.getDay()+1)+"<br />");
 document.write("Dia do mês: "+d.getDate()+"<br />");
 document.write("Mês do ano: "+(d.getMonth()+1)+"<br />");
 document.write("Ano: "+d.getYear()+"<br />");
}

Milissegundos, Segundos, Minutos e Horas

O objeto Date também nos dá a possibilidade de obter informações bem mais específicas, como a hora do dia, minuto, segundo e até mesmo milissegundo. Veja:
  1. getHours() ou getUTCHours() - Retorna um número inteiro de 0 até 23, representando as horas do dia no seu local ou no UTC
  2. getMinutes() ou getUTCMinutes() - Retorna um número de 0 até 59, representando os minutos atual, seja horário local ou UTC
  3. getSeconds() ou getUTCSeconds() - Retorna um inteiro de 0 até 59, representando os segundos
  4. getMilliseconds() ou getUTCMilliSeconds() - Retorna um valor de 0 até 999, representando os milissegundos (!)

Uma função que retorna o horário completo, com hora, minuto, segundo e milissegundo, seria:
function exibe()
{
 var d = new Date();
 document.write(d.getHours()+"h "+
       d.getMinutes()+"min "+
       d.getSeconds()+"s e "+
       d.getMilliseconds()+"milissegundos");
}

Obtendo Informações

  • getTime() - Esse método te informa o número de milissegundos que se passaram desde 1 de janeiro de 1970 até o momento que o método foi invocado.
Esse método é muito usado para calcular o tempo de execução de alguma tarefa.
Por exemplo, no código abaixo, calculamos quanto tempo levou para um looping contar de 1 até 1 trilhão.

Ele cria um objeto do tipo Date, d1, pega seu getTime(), faz uma contagem até 1 trilhão, cria outro objeto do tipo Date, pega seu getTime() e calcula a diferença:
function exibe()
{
 var d1 = new Date();
 var t1 = d1.getTime();

 for(let i=0 ; i<1000000000 ; i++)
  ;
 
 var d2 = new Date();
 var t2 = d2.getTime();
 document.write("Tempo: "+(t2-t1));
}

(na verdade, você pode fazer diretamente d2-d1, pois o JavaScript entende seu propósito, mas essa lógica não é a mesma para todas as linguagens)
  • getTimezoneOffset() - Retorna a diferença, em minutos, do seu horário local para o UTC
  • toString() - Retorna uma string com a data e tempo (no formato: Thu Jan 10 2019 17:15:58 GMT-0300 (Horário Padrão de Brasília))
  • toUTCString() - O mesmo do anterior, mas com os dados UTC (Thu, 10 Jan 2019 20:16:39 GMT)
Por exemplo, o código:
function exibe()
{
 document.write("UTC   = "+(new Date()).toUTCString()+"<br />");
 document.write("Local = "+(new Date()).toString()+"<br />");
 document.write("Diferença = "+(new Date()).getTimezoneOffset() +" minutos <br />");
}

Tem o seguinte efeito:





  • toLocaleString() - Exibe a string da data e horário local que você está (lembre-se que a ordem de dia e mês, por exemplo, é diferente nos EUA e aqui)

Mais material de estudo sobre o assunto:
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Date

Nenhum comentário:

Postar um comentário