Como obter a data atual e a data seguinte usando LocalDate em Java

JavaBeginner
Pratique Agora

Introdução

Este tutorial irá guiá-lo através da obtenção da data atual e do cálculo da data seguinte usando a classe LocalDate em Java. A Java Time API, introduzida no Java 8, oferece capacidades abrangentes para o tratamento de datas e horas. Ao final deste tutorial, você entenderá como usar LocalDate para realizar operações básicas de data de forma eficiente.

Compreendendo a Java Time API e LocalDate

Antes de começarmos a codificar, vamos aprender sobre a classe LocalDate e por que ela é útil para lidar com datas em aplicações Java.

O que é a Java Time API?

O Java 8 introduziu a Java Time API no pacote java.time para resolver as limitações das classes de data e hora mais antigas. Esta API fornece uma abordagem mais clara e intuitiva para o tratamento de datas e horas.

Introdução ao LocalDate

A classe LocalDate representa uma data sem um componente de hora (ano, mês, dia). Ela é imutável, thread-safe e segue o sistema de calendário ISO-8601.

Algumas vantagens chave de usar LocalDate incluem:

  • Fornece uma clara separação entre os conceitos de data, hora e data-hora
  • Oferece métodos intuitivos para manipulação de datas
  • Possui suporte embutido para diferentes formatos de data
  • Lida com cálculos de data corretamente

Vamos criar um novo arquivo Java para explorar a funcionalidade do LocalDate.

  1. No WebIDE, clique no painel Explorer (o ícone que se parece com páginas na barra lateral esquerda)
  2. Clique com o botão direito no painel do explorador de arquivos e selecione "New File" (Novo Arquivo)
  3. Nomeie o arquivo DateExample.java e clique em "OK"
  4. Copie o seguinte modelo de código básico para o arquivo:
public class DateExample {
    public static void main(String[] args) {
        // We will add our date code here
        System.out.println("Learning about LocalDate in Java");
    }
}
  1. Salve o arquivo pressionando Ctrl+S ou selecionando File > Save (Arquivo > Salvar) no menu

Agora que criamos nosso arquivo Java, prosseguiremos para adicionar código para trabalhar com a data atual no próximo passo.

Obtendo a Data Atual com LocalDate

Neste passo, modificaremos nosso programa Java para obter e exibir a data atual usando a classe LocalDate.

Importando a Classe LocalDate

Primeiro, precisamos importar a classe LocalDate do pacote java.time. Abra o arquivo DateExample.java e adicione a instrução de importação no topo:

import java.time.LocalDate;

public class DateExample {
    public static void main(String[] args) {
        // We will add our date code here
        System.out.println("Learning about LocalDate in Java");
    }
}

Usando o Método LocalDate.now()

A classe LocalDate fornece um método estático chamado now() que retorna a data atual. Vamos modificar nosso código para obter e exibir a data atual:

import java.time.LocalDate;

public class DateExample {
    public static void main(String[] args) {
        // Get the current date
        LocalDate currentDate = LocalDate.now();

        // Display the current date
        System.out.println("Current date: " + currentDate);
    }
}

Compilando e Executando o Programa

Agora, vamos compilar e executar nosso programa:

  1. Abra um terminal no WebIDE (Terminal > New Terminal (Terminal > Novo Terminal) no menu)
  2. Navegue até o diretório do projeto, se necessário:
    cd /home/labex/project
  3. Compile o programa Java:
    javac DateExample.java
  4. Execute o programa compilado:
    java DateExample

Você deve ver uma saída semelhante a:

Current date: 2023-04-12

A data real refletirá a data atual quando você executar o programa.

Entendendo o Formato da Saída

A representação de string padrão de um objeto LocalDate segue o formato ISO-8601: YYYY-MM-DD. Este é um padrão internacional para representar datas.

Por exemplo, 2023-04-12 representa 12 de abril de 2023.

Você obteve e exibiu com sucesso a data atual usando a classe LocalDate. No próximo passo, aprenderemos como calcular a data seguinte.

Calculando a Próxima Data

Agora que podemos obter a data atual, aprenderemos como calcular a próxima data adicionando dias a um objeto LocalDate.

Compreendendo a Manipulação de Datas com LocalDate

A classe LocalDate fornece vários métodos para manipulação de datas, incluindo:

  • plusDays(long days): Adiciona o número especificado de dias
  • plusWeeks(long weeks): Adiciona o número especificado de semanas
  • plusMonths(long months): Adiciona o número especificado de meses
  • plusYears(long years): Adiciona o número especificado de anos

Existem também métodos minus correspondentes para subtração.

Vamos aprimorar nosso código para calcular e exibir a próxima data:

import java.time.LocalDate;

public class DateExample {
    public static void main(String[] args) {
        // Get the current date
        LocalDate currentDate = LocalDate.now();

        // Calculate the next date by adding one day
        LocalDate nextDate = currentDate.plusDays(1);

        // Display both dates
        System.out.println("Current date: " + currentDate);
        System.out.println("Next date: " + nextDate);
    }
}

Compilando e Executando o Programa Atualizado

Vamos compilar e executar nosso programa atualizado:

  1. Certifique-se de ter salvo as alterações em DateExample.java
  2. No terminal, compile o programa Java:
    javac DateExample.java
  3. Execute o programa compilado:
    java DateExample

Você deve ver uma saída semelhante a:

Current date: 2023-04-12
Next date: 2023-04-13

Novamente, as datas reais refletirão a data atual quando você executar o programa.

Explorando Outras Manipulações de Data

Vamos aprimorar ainda mais nosso programa para demonstrar outros métodos de manipulação de data:

import java.time.LocalDate;

public class DateExample {
    public static void main(String[] args) {
        // Get the current date
        LocalDate currentDate = LocalDate.now();

        // Calculate various future dates
        LocalDate nextDate = currentDate.plusDays(1);
        LocalDate nextWeek = currentDate.plusWeeks(1);
        LocalDate nextMonth = currentDate.plusMonths(1);
        LocalDate nextYear = currentDate.plusYears(1);

        // Display all dates
        System.out.println("Current date: " + currentDate);
        System.out.println("Next date: " + nextDate);
        System.out.println("Date after one week: " + nextWeek);
        System.out.println("Date after one month: " + nextMonth);
        System.out.println("Date after one year: " + nextYear);
    }
}

Compile e execute o programa novamente:

javac DateExample.java
java DateExample

A saída mostrará a data atual, a próxima data e as datas após uma semana, um mês e um ano:

Current date: 2023-04-12
Next date: 2023-04-13
Date after one week: 2023-04-19
Date after one month: 2023-05-12
Date after one year: 2024-04-12

Conceito Importante: Imutabilidade

Observe que atribuímos o resultado de plusDays() a uma nova variável. Isso ocorre porque os objetos LocalDate são imutáveis, o que significa que seus valores não podem ser alterados após a criação. Métodos como plusDays() não modificam o objeto original; em vez disso, eles retornam um novo objeto com o valor atualizado.

Essa imutabilidade é um recurso importante que torna os objetos LocalDate thread-safe e mais previsíveis em aplicações complexas.

Extraindo Componentes da Data

Neste passo, aprenderemos como extrair componentes individuais de um objeto LocalDate, como o dia, mês, ano e dia da semana.

Métodos de Extração de Componentes da Data

A classe LocalDate fornece vários métodos para extrair componentes específicos de uma data:

  • getDayOfMonth(): Retorna o dia do mês (1-31)
  • getMonthValue(): Retorna o mês como um número (1-12)
  • getMonth(): Retorna o mês como uma constante enum
  • getYear(): Retorna o ano
  • getDayOfWeek(): Retorna o dia da semana como uma constante enum

Vamos criar um novo arquivo para explorar esses métodos:

  1. No WebIDE, crie um novo arquivo chamado DateComponents.java
  2. Adicione o seguinte código ao arquivo:
import java.time.LocalDate;
import java.time.Month;
import java.time.DayOfWeek;

public class DateComponents {
    public static void main(String[] args) {
        // Get the current date
        LocalDate currentDate = LocalDate.now();

        // Extract date components
        int day = currentDate.getDayOfMonth();
        int monthValue = currentDate.getMonthValue();
        Month month = currentDate.getMonth();
        int year = currentDate.getYear();
        DayOfWeek dayOfWeek = currentDate.getDayOfWeek();

        // Display the components
        System.out.println("Current date: " + currentDate);
        System.out.println("Day of month: " + day);
        System.out.println("Month (number): " + monthValue);
        System.out.println("Month (name): " + month);
        System.out.println("Year: " + year);
        System.out.println("Day of week: " + dayOfWeek);
    }
}
  1. Salve o arquivo pressionando Ctrl+S

Compilando e Executando o Programa

Agora, vamos compilar e executar nosso novo programa:

  1. No terminal, compile o programa Java:
    javac DateComponents.java
  2. Execute o programa compilado:
    java DateComponents

Você deve ver uma saída semelhante a:

Current date: 2023-04-12
Day of month: 12
Month (number): 4
Month (name): APRIL
Year: 2023
Day of week: WEDNESDAY

Criando uma Data Específica

Além de obter a data atual, podemos criar um objeto LocalDate representando uma data específica usando o método of(). Vamos aprimorar nosso programa para criar uma data específica:

import java.time.LocalDate;
import java.time.Month;
import java.time.DayOfWeek;

public class DateComponents {
    public static void main(String[] args) {
        // Get the current date
        LocalDate currentDate = LocalDate.now();

        // Create a specific date
        LocalDate specificDate = LocalDate.of(2025, 12, 25);

        // Extract date components from the current date
        int day = currentDate.getDayOfMonth();
        int monthValue = currentDate.getMonthValue();
        Month month = currentDate.getMonth();
        int year = currentDate.getYear();
        DayOfWeek dayOfWeek = currentDate.getDayOfWeek();

        // Display the current date components
        System.out.println("Current date: " + currentDate);
        System.out.println("Day of month: " + day);
        System.out.println("Month (number): " + monthValue);
        System.out.println("Month (name): " + month);
        System.out.println("Year: " + year);
        System.out.println("Day of week: " + dayOfWeek);

        // Display the specific date
        System.out.println("\nSpecific date: " + specificDate);
        System.out.println("Day of week for specific date: " + specificDate.getDayOfWeek());
    }
}

Compile e execute o programa atualizado:

javac DateComponents.java
java DateComponents

A saída agora incluirá informações sobre a data específica:

Current date: 2023-04-12
Day of month: 12
Month (number): 4
Month (name): APRIL
Year: 2023
Day of week: WEDNESDAY

Specific date: 2025-12-25
Day of week for specific date: THURSDAY

Você agora aprendeu como extrair componentes de um objeto LocalDate e criar datas para dias específicos. Essas capacidades são especialmente úteis ao construir aplicações que precisam realizar operações baseadas em datas ou exibir informações de data em diferentes formatos.

Resumo

Neste tutorial, você aprendeu como trabalhar com datas em Java usando a classe LocalDate da Java Time API. Aqui está um resumo do que você realizou:

  1. Criou um programa Java para obter a data atual usando LocalDate.now()
  2. Calculou datas futuras adicionando dias, semanas, meses e anos a uma data
  3. Extraiu componentes de uma data, como dia, mês, ano e dia da semana
  4. Criou uma data específica usando o método LocalDate.of()

Essas operações básicas de data formam a base para funcionalidades mais complexas baseadas em data em aplicações Java. A Java Time API fornece um conjunto abrangente de classes e métodos para trabalhar com datas e horas, tornando mais fácil lidar com requisitos relacionados a datas em suas aplicações.

Algumas aplicações comuns do conhecimento que você adquiriu incluem:

  • Calcular datas de vencimento para tarefas ou pagamentos
  • Agendar eventos e compromissos
  • Determinar o dia da semana para uma data específica
  • Acompanhar períodos de tempo entre eventos
  • Formatar datas para exibição em interfaces de usuário

À medida que você continua sua jornada em Java, pode explorar recursos mais avançados da Java Time API, como trabalhar com fusos horários, formatar datas para diferentes regiões e realizar cálculos de data complexos.