Pegando a data atual em Java

Pegando a data atual em Java

Entenda um pouco mais das diversas formas para gerar a data atual, utilizando algumas das funções da linguagem Java de programação.

Quando um aluno inicia um curso é gerada uma matrícula para ele no meu sistema:


public class Matricula {

private Aluno aluno; 
private Curso curso; 
private Date dataDeInscricao;

//métodos
Banner da Imersão Phyton: Inscreva-se gratuitamente na Imersão Phyton da Alura e mergulhe em análise de dados!

Mas como faço para adicionar a data atual no momento em que o aluno se matricula em um curso? É simples! Precisamos apenas fazer uma instância para a classe Date:

public class Matricula {

//atributos

private Date dataDeInscricao = new Date();

//métodos

Testando o método geraDataDeInscricao(), qual será o resultado?


Matricula matricula = new Matricula(); System.out.println(matricula.getDataDeInscricao());

Resultado:

 > Wed Nov 25 10:16:55 BRST 2015

Ótimo, funcionou! Quando fazemos uma instância da classe Date, ela coleta as informações de: dia, mês, ano, horas, minutos e segundos de acordo com o Time Zone configurado na máquina com precisão de milissegundos, ou seja, ele vai pegar todas essas informações naquele instante!

Embora a classe Date funcione, não é recomendado fazer instâncias dela para gerar a data atual, pois é considerada uma solução Deprecated, ou seja, uma solução obsoleta. Sugerimos utilizar a classe Date apenas para questões de compatibilidade. Para outras situações, é recomendado o uso da classe Calendar, utilizamos o seu método estático getInstance() para pegar a data atual:


public class Matricula {

// atributos

private Calendar dataDeInscricao = Calendar.getInstance();

//métodos

}

Se testarmos novamente a classe Matricula:


Matricula matricula = new Matricula(); System.out.println(matricula.getDataDeInscricao().getTime());

Resultado:

 > Wed Nov 25 10:55:14 BRST 2015

Funcionou como o esperado. Existe também a classe GregorianCalendar,que é uma subclasse de Calendar, ou seja, uma classe mais específica que abstrai as necessidades para casos em que o seu calendário seja gregoriano. Para alterar o calendário só precisa mudar de Calendar para GregorianCalendar e, em vez de usar o método estático getInstance(), precisamos fazer a instância da classe GregorianCalendar:


public class Matricula {

// atributos

private GregorianCalendar dataDeInscricao = new GregorianCalendar();

//métodos

}

Testando novamente a classe Matricula:


Matricula matricula = new Matricula(); 
System.out.println(matricula.getDataDeInscricao().getTime());

Resultado:

 > Wed Nov 25 10:58:17 BRST 2015

A data é impressa com sucesso! Mas, além do Date e do Calendar, é possível utilizar a classe LocalDateTime disponível a partir do Java 8, por meio do seu método estático now(), que coleta a informação de data atual de acordo com as informações do relógio do sistema operacional.


public class Matricula {

// atributos

private LocalDate dataDeInscricao = LocalDate.now();

//métodos

}

Testando novamente:


Matricula matricula = new Matricula();
System.out.println(matricula.getDataDeInscricao());

Resultado

> 2015-11-25T11:05:36.693 

Funcionou como esperado! Como podemos ver, a impressão do LocalDateTime é mais sofisticada e apresenta um formato mais legível.

Vimos diversas formas para gerar a data atual utilizando Java, porém algumas são consideradas Deprecated e só são utilizadas apenas para compatibilidade, como é o caso da classe Date e também soluções mais sofisticadas como é o caso da LocalDateTime disponível a partir do Java 8. E aí, qual solução você gostou mais?

Há um post da Caelum que detalha essa nova API do Java 8. Pensando nisso tudo, o criador da Caelum, Paulo Silveira, resolveu criar um curso de Java 8 e suas bibliotecas com mais 1500 alunos e 99% de recomendação.

Alex Felipe
Alex Felipe

Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Atualmente cria conteúdo no canal https://www.youtube.com/@AlexFelipeDev.

Veja outros artigos sobre Programação