5 recursos úteis da API Java 8 Date and Time

Em 2014, o lançamento do Java 8 introduziu uma nova API de data e hora. Você pode acessar facilmente essa API importando o pacote java.time .

Com a API de data e hora do Java 8, os desenvolvedores têm fácil acesso a datas, horas, fusos horários, instantes, durações e períodos. Esses recursos estão disponíveis por meio de uma extensa lista de classes no pacote java.time .

Neste tutorial, você aprenderá cinco recursos úteis da API de data e hora do Java 8.

1. Obtendo Seu Horário Local

A API de data e hora do Java 8 vem com uma classe chamada LocalTime . Esta aula fornece um tempo no formato hora-minuto-segundo .

Relacionado: O que significa API? Exemplos de como usar APIs

Para obter seu horário atual usando esta classe, primeiro você terá que criar um novo objeto da classe LocalTime . Em seguida, passe o objeto recuperado do método now () para ele. O objeto recém-criado armazenará a hora atual da execução do programa. Isso ocorre porque o método now () recupera a hora atual do relógio do sistema que está em seu computador.

Usando o exemplo de classe LocalTime

 import java.time.LocalTime;

public class DateTimeAPI {
public static void main(String[] args) {
// create a new time object that stores the local time
LocalTime time = LocalTime.now();

System.out.println("The current hour is: " + time.getHour());
System.out.println("The current minute is: " + time.getMinute());
System.out.println("The current second is: " + time.getSecond());
System.out.println("The current time to the nanosecond is: " + time);
}
}

O código acima realiza várias tarefas simples usando diferentes métodos LocalTime . Executar o código acima produz a seguinte saída no console.

 The current hour is: 10
The current minute is: 45
The current second is: 19
The current time to the nanosecond is: 10:45:19.324014300

2. Obtenha sua data local

Você pode obter sua data local por meio da API de data e hora do Java 8, da mesma forma que recupera sua hora local. A única diferença é que você usa a classe LocalDate em vez da classe LocalTime .

Relacionado: Aprenda a criar classes em Java

A classe LocalDate usa a estrutura ano-mês-dia para exibir a data do sistema em seu computador, com a ajuda do método now () . A classe LocalDate fornece acesso a mais de 50 métodos diferentes, mas os que você pode usar com mais frequência são os seguintes.

  • now () (não aceita argumentos e retorna a data atual)
  • getYear () (não aceita argumentos e retorna o ano atual)
  • getMonth () (não aceita argumentos e retorna o mês atual)
  • getDayOfWeek () (não aceita argumentos e retorna o dia da semana atual)
  • getDayOfMonth () (não aceita argumentos e retorna o dia atual do mês)
  • getDayOfYear () (não aceita argumentos e retorna o dia atual do ano)

Usando o exemplo de classe LocalDate

 import java.time.LocalDate;

public class DateTimeAPI {
public static void main(String[] args) {
// create a new date object that stores the local date
LocalDate date = LocalDate.now();

System.out.println("The current year is: " + date.getYear());
System.out.println("The current month is: " + date.getMonth());
System.out.println("The current day of the week is: " + date.getDayOfWeek());
System.out.println("The current day of the Month is: " + date.getDayOfMonth());
System.out.println("The current day of the year is: " + date.getDayOfYear());
System.out.println("The current date is: " + date);
}
}

O código acima produz a seguinte saída no console.

 The current year is: 2021
The current month is: SEPTEMBER
The current day of the week is: TUESDAY
The current day of the Month is: 14
The current day of the year is: 257
The current date is: 2021-09-14

3. Verifique se o ano atual é um ano bissexto

Entre os muitos métodos da classe LocalDate está o método isLeapYear () . Você pode usar este método para verificar se um determinado ano é um ano bissexto. Para verificar o ano atual, você pode criar um novo objeto LocalDate com o método now () e usar o método isLeapYear () no objeto recém-criado.

Usar o método isLeapYear () em um objeto LocalDate retornará um valor booleano, que será verdadeiro se o ano for um ano bissexto e falso caso contrário.

Usando o exemplo do método isLeapYear ()

 import java.time.LocalDate;

public class DateTimeAPI {
public static void main(String[] args) {
// create an object to store the current date.
LocalDate date = LocalDate.now();

// check if the current year is a leap year.
boolean isLeap = date.isLeapYear();

// get the current year from the current date.
int year = date.getYear();

// tell the user if the current year is a leap year.
if (isLeap) {
System.out.println(year + " is a leap year.");
} else {
System.out.println(year + " is not a leap year.");
}
}
}

O código acima produzirá a seguinte saída no console.

 
2021 is not a leap year.

4. Obtenha sua data e hora local

Há uma classe na API de data e hora do Java 8 chamada LocalDateTime . Como o nome sugere, você pode usar essa classe para obter a data e a hora em sua localização atual.

A classe tem vários métodos importantes, mas o método now () pode ser aquele com o qual você deseja se familiarizar primeiro. O método now () da classe LocalDateTime retorna a data e a hora de sua localização atual. Ele usa a estrutura ano-mês-dia T hora: minutos: segundos ; onde a data aparece primeiro e um t maiúsculo a separa da hora.

Usando o exemplo de classe LocalDateTime

 import java.time.LocalDateTime;

public class DateTimeAPI {
public static void main(String[] args) {
// create a new date object that stores the local date
LocalDateTime dateTime = LocalDateTime.now();

// the current time
System.out.println("The current hour is: " + dateTime.getHour());
System.out.println("The current minute is: " + dateTime.getMinute());
System.out.println("The current second is: " + dateTime.getSecond());

// the current date
System.out.println("The current year is: " + dateTime.getYear());
System.out.println("The current month is: " + dateTime.getMonth());
System.out.println("The current day of the week is: " + dateTime.getDayOfWeek());
System.out.println("The current day of the Month is: " + dateTime.getDayOfMonth());
System.out.println("The current day of the year is: " + dateTime.getDayOfYear());

// the current date and time
System.out.println("The current date and time is: " + dateTime);
}
}

O código acima produz a seguinte saída no console.

 The current hour is: 11
The current minute is: 9
The current second is: 30
The current year is: 2021
The current month is: SEPTEMBER
The current day of the week is: TUESDAY
The current day of the Month is: 14
The current day of the year is: 257
The current date and time is: 2021-09-14T11:09:30.009675800

Como você pode ver na saída acima, a classe LocalDateTime pode gerar uma combinação de data e hora, bem como os valores individuais (como o mês atual), que você pode obter nas classes LocalDate e LocalTime.

5. Obtenha a data e hora atuais de um local usando seu fuso horário

Como você viu até agora, a API de data e hora do Java 8 possui muitos recursos úteis. Outro recurso útil é a capacidade de obter o fuso horário de sua localização atual ou a data e hora de um local usando seu fuso horário.

Usando o exemplo de classe ZonedDateTime

 import java.time.ZoneId;
import java.time.ZonedDateTime;

public class DateTimeAPI {
public static void main(String[] args) {
// create a new object to store your local date, time, and time-zone.
ZonedDateTime zDateTime = ZonedDateTime.now();

// create a zoneId object to store your local time-zone
ZoneId localTimeZone = zDateTime.getZone();

// create a new zoneId object to store the zoneId provided by the user
ZoneId newZoneId = ZoneId.of("GMT-03:00");

// create an object to store the current date, time, and time-zone
// retrieved using the zoneId provide by the user
ZonedDateTime newLocation = ZonedDateTime.now(newZoneId);

System.out.println("The date, time, and time-zone at your current location is: " + zDateTime);
System.out.println("The time-zone at your current location is: " + localTimeZone);
System.out.println("The date, time, and time-zone at the new time-zone is: " + newLocation );
}
}

Muita coisa está acontecendo no código acima. Como as classes anteriores, a classe ZoneDateTime usa o método now () , que neste caso retorna um objeto com a data, hora e fuso horário atuais.

No entanto, ao contrário dos exemplos anteriores, a classe ZoneDateTime obtém um fuso horário do usuário e retorna a data e a hora apropriadas.

O código acima produzirá a seguinte saída no console.

 The date, time, and time-zone at your current location is: 2021-09-14T15:00:17.029010300-05:00[GMT-05:00]
The time-zone at your current location is: GMT-05:00
The date, time, and time-zone at the new time-zone is: 2021-09-14T17:00:17.042989-03:00[GMT-03:00]

Como você pode ver na saída acima, o fuso horário GMT-03: 00 está duas horas à frente do fuso horário GMT-05: 00.

Saiba mais sobre APIs

Neste tutorial, você aprendeu sobre os cinco principais recursos que vêm com a API de data e hora do Java 8. Esta lista não está completa e existem outros recursos da API que você pode explorar.

No entanto, se você estiver curioso sobre como as APIs funcionam em geral, existem recursos para ajudá-lo com isso também.