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 Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

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. Criador de mais de 40 cursos, como Kotlin, Flutter, Android, persistência de dados, comunicação com Web API, personalização de telas, testes automatizados, arquitetura de Apps e Firebase. É expert em Programação Orientada a Objetos, visando sempre compartilhar as boas práticas e tendências do mercado de desenvolvimento de software. Atuou 2 anos como editor de conteúdo no blog da Alura e hoje ainda escreve artigos técnicos.

Veja outros artigos sobre Programação