Ravakahn Gladior
Ravakahn Gladior Ravakahn foi um gladiador que, na Roma Antiga, lutava com outros gladiadores ou animais, às vezes, até a morte, para o entretenimento do público romano. há 4 anos

Extraindo ano, mês e dia de um objeto Date no Java

Extraindo ano, mês e dia de um objeto Date no Java

No Java 8, uma biblioteca de data e hora totalmente nova foi introduzida por várias boas razões . Além de outras vantagens, a nova biblioteca fornece uma API melhor para operações como extrair ano, mês, dia de uma determinada data.

Usando Java 7

De um Date, para extrair campos individuais como ano, mês, dia (entre outros), a primeira coisa que devemos fazer é converter o Date para uma instancia de Calendar.

Date date = new Date(); // sua instancia Date
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Uma vez com uma instância de Calendar, nós podemos invocar diretamente o método get() e fornecer o campo específico que queremos obter.

Nós podemos usar constantes presentes na classe Calendar para obter os campos específicos.

Obter ano

Para obter o ano, nós podemos invocar o método get() passando como argumento o valor Calendar.YEAR.

int ano = calendar.get(Calendar.YEAR);

Obter mês

Similarmente, para obter o mês, nós podemos invocar o método get() passando como argumento o valor Calendar.MONTH.

int mes = calendar.get(Calendar.MONTH);

Note, que em Calendar, os meses iniciam-se em zero. Este método irá retornar o valor 0 para representar Janeiro, e 11 para Dezembro.

Obter dia

Finalmente, para obter o dia, podemos invocar o método get() passando como argumento o valor Calendar.DAY_OF_MONTH.

int dia = calendar.get(Calendar.DAY_OF_MONTH);

Usando Java 8

O novo pacote java.time contém uma série de classes que podem ser utilizadas para representar uma data.

Cada classe se difere pelas informações adicionais que armazena em adição a um objeto Date.

O básico LocalDate contém apenas a informação de data, enquanto LocalDateTime contém informações da data e hora.

Similarmente, mais classes avançadas como OffsetDateTime e ZonedDateTime contém informações adicionais em UTC e informações sobre fuso horário, respectivamente.

De qualquer forma, todas essas classes oferecem suporte a métodos diretos para extrair informações de ano, mês e data.

Vamos explorar esses métodos para extrair informações de uma instância LocalDate chamado localDate.

Pegar o ano

Para extrair o ano, a classe LocalDate simplesmente fornece o método getYear:

int ano = localDate.getYear();

Pegar o mês

Similarmente, para obter o mês, podemos usar getMonthValue:

int mes = localDate.getMonthValue();

Diferentemente de Calendar, os meses em LocalDate são indexados em 1. Para janeiro, é retornado 1, e para dezembro é retornado 12.

Obter o dia do mês

Finalmente, para obter o dia, podemos usar o método getDayOfMonth:

int dia = localDate.getDayOfMonth();

Conclusão

Neste rápido (e simples) tutorial, nós exploramos como obter valores inteiros de ano, mês e dia do mês de um objeto Date do Java.

Mostramos como extrair esses valores usando as antigas classes Date e Calendar, bem como a nova biblioteca de data e hora do Java 8.

O código fonte completo dos trechos usados neste tutorial está disponível no Github ou abaixo:

Date date = new Date();

// LocalDate localDate = LocalDate.now();
LocalDate localDate = date.toInstant()
  .atZone(ZoneId.systemDefault())
  .toLocalDate();

int ano = localDate.getYear();
System.out.println("ano = " + ano);

int mes = localDate.getMonthValue();
System.out.println("mes = " + mes);

int dia = localDate.getDayOfMonth();
System.out.println("dia = " + dia);