logo javascript

Aprenda javascript com facilidade do zero

Prof. Ivan Lourenço Gomes

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.

  • Um argumento numérico: segundos desde o Epoch
  • Dois argumentos numéricos: Ano e mês (** Não se esqueça que os meses vão de 0 a 11 **)
  • Três argumentos numéricos: Ano, mês e dia
  • Quatro argumentos numéricos: Ano, mês, dia e horas
  • Cinco argumentos numéricos: Ano, mês, dia, horas e minutos
  • Seis argumentos numéricos: Ano, mês, dia, horas, minutos e segundos
  •                             
    
        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:

  • ISO date: "2020-03-18" (ano-mês-dia)
  • Short Date: "03/18/2020" (mês/dia/ano)
  • Long Date: "Mar 18 2020" ou "18 Mar 2020"
  •                             
    
        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")

    Índice de Aulas