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.
- No WebIDE, clique no painel Explorer (o ícone que se parece com páginas na barra lateral esquerda)
- Clique com o botão direito no painel do explorador de arquivos e selecione "New File" (Novo Arquivo)
- Nomeie o arquivo
DateExample.javae clique em "OK" - 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");
}
}
- 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:
- Abra um terminal no WebIDE (Terminal > New Terminal (Terminal > Novo Terminal) no menu)
- Navegue até o diretório do projeto, se necessário:
cd /home/labex/project - Compile o programa Java:
javac DateExample.java - 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 diasplusWeeks(long weeks): Adiciona o número especificado de semanasplusMonths(long months): Adiciona o número especificado de mesesplusYears(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:
- Certifique-se de ter salvo as alterações em
DateExample.java - No terminal, compile o programa Java:
javac DateExample.java - 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 enumgetYear(): Retorna o anogetDayOfWeek(): Retorna o dia da semana como uma constante enum
Vamos criar um novo arquivo para explorar esses métodos:
- No WebIDE, crie um novo arquivo chamado
DateComponents.java - 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);
}
}
- Salve o arquivo pressionando Ctrl+S
Compilando e Executando o Programa
Agora, vamos compilar e executar nosso novo programa:
- No terminal, compile o programa Java:
javac DateComponents.java - 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:
- Criou um programa Java para obter a data atual usando
LocalDate.now() - Calculou datas futuras adicionando dias, semanas, meses e anos a uma data
- Extraiu componentes de uma data, como dia, mês, ano e dia da semana
- 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.



