Data e Hora
A linguagem Javascript nos permite trabalhar com data e hora com facilidade através da classe Date. Para criar um objeto deste tipo, usamos a keyword new, que será explicada com mais detalhes mais adiante, quando falarmos sobre classes.
// Criação de um objeto do tipo Date
var data = new Date();
console.log(data);
Ao fazermos isto, criamos um objeto com a data e hora atuais, expressas no formato completo, com dia da semana, mês, dia, ano, hora, minutos, segundos e fuso horário: Ex. Sun Jul 22 2018 11:19:34 GMT-0300 (Hora oficial do Brasil).
Métodos do objeto date
Podemos usar diversos métodos para ter a data em outros formatos ou para extrair apenas parte dela (mês, dia, etc.), conforme a tabela abaixo.
Método | Descrição |
---|---|
getDate() | Retorna o dia do mês (de 1 a 31) |
getDay() | Retorna o dia da semana (de 0 - Domingo a 6 - Sábado) |
getFullYear() | Retorna o ano |
getHours() | Retorna a hora |
getMilliseconds() | Retorna o número de milisegundos (de 0 a 999) |
getMinutes() | Retorna os minutos (de 0 a 59) |
getMonth() | Retorna o mês (de 0 a 11) |
getSeconds() | Retorna os segundos (de 0 a 59) |
getTime() | Retorna o número de milisegundos desde o Epoch (01 Janeiro de 1970, 00:00:00) |
setTime() | Cria uma data espeficifaca através de milisegundos desde o Epoch |
toLocaleString() | Cria uma data em formato string, usando as configurações locais |
Unix Epoch
Epoch é um conceito presente em quase todas as linguagens de programação. Podemos considerar o Epoch como o ponto de partida da contagem de tempo, que servirá para efeito de cálculos com data e hora.
A linguagem Javascript utiliza o Unix Epoch, que é: 01 de Janeiro de 1970, 00:00:00 do fuso horário UTC.
var data = new Date();
console.log(data.getTime());
O método getTime() retorna um número que significa a hora atual no formato milisegundos desde o Epoch, lembrando que um segundo possui mil milisegundos. A tabela abaixo mostra algumas conversões que são úteis para fazer cálculos com milisegundos:
Tempo | Milisegundos (ms) |
---|---|
1 segundo | 1.000 |
1 minuto | 60.000 |
1 hora | 3.600.000 |
1 dia | 86.400.000 |
1 ano (365 dias) | 31.536.000.000 |
Como calcular então quantos anos se passaram desde o Epoch?
var data = new Date();
data = data.getTime();
var anos = data / 31536000000;
console.log(Math.floor(anos));
Criando datas específicas
Nos exemplos acima, no momento da criação do objeto de data não passamos nenhum argumento, portanto todas as datas representam a data atual. Porém, podemos passar argumento para definir datas específicas.
var data = new Date(2020,2,18);
console.log(data);
Podemos também passar um string como argumento, que aceita três tipos de datas:
var data = new Date("2020-03-18");
console.log(data);
Desafio: Cálculo de intervalo de datas
Se um produto foi enviado no dia 20 Março de 2018 e entregue no dia 06 de Abril de 2018, quantos dias o produto levou para ser entregue?
Tempo de entrega: solte aqui (id="dias_entrega")