Atualizado: 28/09/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Manipulação de Datas em Java com a Classe LocalDate

Introduzida no Java 8, a API java.time foi criada para substituir as antigas e complexas classes java.util.Date e Calendar. Dentro desta API moderna, a classe LocalDate é a escolha ideal para representar uma data (ano, mês e dia), sem informações de hora ou fuso horário.

Ela oferece uma interface clara e poderosa para criar datas, acessar seus componentes e realizar operações como adicionar ou subtrair dias, meses e anos.

Criação de Datas

Existem duas formas principais de criar um objeto LocalDate.

  1. Obter a data atual: O método estático now() retorna um objeto LocalDate com a data atual do relógio do sistema.

    LocalDate dataAtual = LocalDate.now();
    System.out.println(dataAtual); // Exibe a data atual no formato AAAA-MM-DD
  2. Criar uma data específica: O método estático of() permite criar uma data fornecendo o ano, mês e dia.

    LocalDate dataEspecifica = LocalDate.of(2025, 9, 17);
    System.out.println(dataEspecifica); // Exibe 2025-09-17

Acesso a Informações da Data

Após criar um objeto LocalDate, é possível extrair suas partes individuais com diversos métodos get.

  • getYear(): Retorna o ano.
  • getMonthValue(): Retorna o mês como um número (1 para Janeiro, 12 para Dezembro).
  • getDayOfMonth(): Retorna o dia do mês (1-31).
  • getDayOfWeek(): Retorna o dia da semana (um objeto do tipo DayOfWeek, como WEDNESDAY).
  • getDayOfYear(): Retorna o dia do ano (1-366).
import java.time.DayOfWeek;
import java.time.LocalDate;

public class Program {
    public static void main(String[] args) {
        LocalDate hoje = LocalDate.now();

        int ano = hoje.getYear();
        int mes = hoje.getMonthValue();
        int dia = hoje.getDayOfMonth();
        DayOfWeek diaDaSemana = hoje.getDayOfWeek();

        System.out.println("Data completa: " + hoje);
        System.out.println("Dia da semana: " + diaDaSemana);
        System.out.printf("Data formatada: %02d/%02d/%d \n", dia, mes, ano);
    }
}

Manipulação de Datas e Imutabilidade

A característica mais importante da classe LocalDate é a imutabilidade. Isso significa que um objeto LocalDate, uma vez criado, não pode ser alterado. Métodos como plusYears ou minusDays não modificam a data original; em vez disso, eles retornam um novo objeto LocalDate com o resultado da operação.

Por isso, é essencial reatribuir o resultado da operação a uma variável.

  • plusDays(n), plusWeeks(n), plusMonths(n), plusYears(n): Adicionam um período.
  • minusDays(n), minusWeeks(n), minusMonths(n), minusYears(n): Subtraem um período.

O exemplo abaixo demonstra como realizar várias operações em sequência.

import java.time.LocalDate;

public class Program {
    public static void main(String[] args) {
        LocalDate data = LocalDate.of(1914, 7, 28);
        System.out.println("Data inicial: " + data); // 1914-07-28

        // As operações retornam um novo objeto, que precisa ser reatribuído
        data = data.plusYears(4);
        data = data.plusMonths(3);
        data = data.plusDays(14);
        System.out.println("Após adição: " + data); // 1918-11-11
    }
}

Como cada método retorna um novo objeto, as chamadas podem ser encadeadas para um código mais fluente e conciso:

import java.time.LocalDate;

public class Program {
    public static void main(String[] args) {
        LocalDate data = LocalDate.of(1914, 7, 28);

        // Encadeando as chamadas de método
        LocalDate dataModificada = data.plusYears(4)
                                       .plusMonths(3)
                                       .plusDays(14);

        System.out.println("Data modificada: " + dataModificada); // 1918-11-11
    }
}

Resumo

  • LocalDate: Parte da moderna API java.time, representa uma data (ano, mês, dia) sem hora ou fuso horário.
  • Criação: Use LocalDate.now() para a data atual ou LocalDate.of(ano, mes, dia) para uma data específica.
  • Acesso: Métodos como getYear() e getDayOfWeek() extraem componentes individuais de uma data.
  • Imutabilidade: LocalDate é imutável. Métodos de manipulação (plusDays, minusMonths) retornam um novo objeto, exigindo que o resultado seja atribuído a uma variável.
  • Encadeamento: As chamadas de manipulação podem ser encadeadas (data.plusYears(1).plusMonths(2)) para um código mais limpo.
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com