Trabalhando com datas em JavaScript

(Last Updated On: 29 de março de 2019)

Uma floricultura me pediu pra criar uma funcionalidade em que a cor de fundo do site mudasse de acordo com as horas do dia. Vamos ver como podemos encontrar as horas do dia e alterar o CSS tudo isso usando JavaScript.

Trabalhando com datas e horas

O JavaScript possui a classe Date que nos permite trabalhar com datas e horários. Se chamarmos o construtor Date sem parâmetros:


const horas = new Date();
console.log( horas );

Conseguimos obter a data e o horário atual:

Thu Nov 01 2018 13:51:03 GMT-0300 (Brasília Standard Time)

Ótimo, resolvemos uma pequena parte do problema que era descobrir como pegar a data e hora, agora vamos tentar ser mais específico e encontrar somentes as horas do dia.

Encontrando as horas

Como Date é um classe, ela possui um método para nos auxiliar a encontrar as horas como o método .getUTCHours()


const hoje = new Date();
console.log( hoje.getUTCHours() );

Conseguimos ser bem específicos e encontrar as somente as horas, o problema foi que o número que tivemos de retorno foi 15 e no dia em eu rodei esse código eram exatas 13:00 horas, logo o retorno deveria ter sido 13 e não 15. O que ocorreu ?

Resolvendo o problema das horas

Conseguimos pegar a hora do dia, mas ela está vindo errada!. O problema da hora encontrada não ser a hora real aconteceu por que o método getUTCHours()está trazendo a hora UTC (Tempo Universal Coordenado) Para resolver essa situação vamos utilizar o método getHours da classe Date


const horas = new Date();
console.log( horas.getHours() );

Ambos os métodos trazem apenas as horas, a diferença é que getHours() retorna o horário local.

No momento em que eu rodei o script a hora retornada foi 13 , Uma parte do problema foi resolvido, agora vamos ver como alterar a cor do fundo do site usando JavaScript.

Alterando as cores de acordo com as horas

Atualmente a cor de fundo do site é amarelo, o que eu quero é deixar ele azul a partir das 16:00. Com o JavaScript nós conseguimos alterar a cor do fundo da página utilizando os seletores CSS.


const conteudo = document.querySelector(".cordefundo");
conteudo.style.background = "#fed02e";

Alterando CSS com JavaScript

Agora que já sabemos como pegar a hora do dia, e como alterar a cor de fundo de uma página, vamos criar um script com a ajuda do if para fazer a mudança de horário


const now = new Date;
const tempo = now.getHours();

if( tempo < 16 ) {

    const conteudo = document.querySelector(".container");

    conteudo.style.background = "#fed02e";

 } else {

    const conteudo = document.querySelector(".container");

    conteudo.style.background = "#1000ff";
}

Para saber mais

Além de invocar o construtor sem parâmetro, existem outras maneiras para encontrar data e hora usando o objeto Date

Passando o valor da data em milisegundos. De acordo com a documentação do developer mozilla, a data do JavaScript é baseada no valor de tempo em milissegundos desde a meia noite de 01 de Janeiro de 1970, UTC.

Com um dia correspondendo a 86.400,000 milissegundos.( essa parte é do texto da mozilla)


const horas = new Date(5000000000000);
console.log( horas );

Obtemos como resposta:

2128-06-11T08:53:20.000Z

Passando dia, mês e ano como parâmetro, lembrando que, nessa notação, o mês de janeiro é o 0:


const horas = new Date(2015,10,1);
console.log( horas );

Obtemos como resposta:

2015-11-01T02:00:00.000Z

Passando como parâmetro do construtor uma string:


const horas = new Date("2015/10/1");
console.log( horas );

Obtemos como resposta:

2015-10-01T03:00:00.000Z

Se ficou interessado em como o Javascript funciona e como você pode utilizá-lo melhor, aqui na Alura temos uma carreira em desenvolvimento Javascript. Nela, você verá como programar em Javascript, utilizar expressões regulares, entre outras coisas.

FIQUE POR DENTRO

Próximo ArtigoO que é o Marketing de Conteúdo