Java LocalDate com o Método withDayOfYear

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como usar o método withDayOfYear() na classe LocalDate do Java para criar uma data com um novo valor de dia do ano.

Criar um arquivo Java

Crie um arquivo LocalDateWithDayOfYear.java no diretório ~/project com o seguinte código:

import java.time.LocalDate;

public class LocalDateWithDayOfYear {
    public static void main(String[] args) {
        System.out.println("Original date: ");
        LocalDate localDate = LocalDate.of(2002, 01, 10);
        System.out.println(localDate);
    }
}

Use o seguinte comando para compilar e executar o código:

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

A saída deve mostrar a data original:

Original date:
2002-01-10

Usar withDayOfYear() para Definir o Novo Dia do Ano

Para criar uma nova data definindo um novo valor de dia do ano, podemos usar o método withDayOfYear() para definir um novo dia para a data.

Adicione o seguinte código após a linha System.out.println(localDate);:

// set day-of-year as 30
localDate = localDate.withDayOfYear(30);
System.out.println("New date with day-of-year set as 30: ");
System.out.println(localDate);

// set day-of-year as 300
localDate = localDate.withDayOfYear(300);
System.out.println("New date with day-of-year set as 300: ");
System.out.println(localDate);

Use o seguinte comando para compilar e executar o código:

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

A saída deve mostrar as novas datas com os novos valores de dia do ano:

Original date:
2002-01-10
New date with day-of-year set as 30:
2002-01-30
New date with day-of-year set as 300:
2002-10-27

Lidar com Data Inválida

Se a data resultante for inválida, uma exceção será lançada. Podemos lidar com a exceção usando um bloco try-catch da seguinte forma:

try {
    // set day-of-year as 366 (invalid for non-leap year)
    localDate = localDate.withDayOfYear(366);
    System.out.println(localDate);
} catch (Exception e) {
    System.out.println("Invalid date: " + e.getMessage());
}

Use o seguinte comando para compilar e executar o código:

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

A saída deve mostrar a mensagem da exceção de data inválida:

Original date:
2002-01-10
New date with day-of-year set as 30:
2002-01-30
New date with day-of-year set as 300:
2002-10-27
Invalid date: Invalid date 'DayOfYear 366' as '2002' is not a leap year

Resumo

Neste laboratório, aprendemos como usar o método withDayOfYear() na classe LocalDate do Java para criar uma data com um novo valor de dia do ano. Também aprendemos como lidar com a exceção de data inválida ao definir um novo valor de dia do ano.