Classes

DateTime

Trabalhando com data, hora e data hora

No Java moderno (Java 8+), trabalhamos com data e hora através da API java.time, que fornece classes imutáveis, seguras e fáceis de usar.

As principais classes são:

  • LocalDate → representa apenas data
  • LocalTime → representa apenas hora
  • LocalDateTime → representa data e hora juntas

Essas classes substituem as antigas Date e Calendar, que são mais complexas e propensas a erros.

Evite usar java.util.Date e Calendar em novos projetos.

LocalDate

LocalDate representa uma data sem hora, no formato ano-mês-dia (YYYY-MM-DD).

Exemplos de uso comuns

  • Datas de nascimento
  • Datas de vencimento
  • Datas de cadastro
  • Feriados

Criando objetos LocalDate

Data atual

LocalDate hoje = LocalDate.now();

Data específica

LocalDate data = LocalDate.of(2024, 5, 20);

A partir de String (ISO-8601)

LocalDate data = LocalDate.parse("2024-05-20");

LocalTime

LocalTime representa uma hora sem data, no formato hora:minuto:segundo.

Exemplos de uso comuns

  • Horário de abertura/fechamento
  • Horário de aulas
  • Horário de eventos
  • Agendamentos diários

Criando objetos LocalTime

Hora atual

LocalTime agora = LocalTime.now();

Hora específica

LocalTime horario = LocalTime.of(14, 30);

A partir de String

LocalTime horario = LocalTime.parse("14:30");

LocalDateTime

LocalDateTime combina data e hora, sem fuso horário.

Exemplos de uso comuns

  • Data e hora de criação de registros
  • Logs de sistemas
  • Eventos agendados
  • Auditoria de dados

Criando objetos LocalDateTime

Data e hora atuais

LocalDateTime agora = LocalDateTime.now();

Data e hora específicas

LocalDateTime dataHora = LocalDateTime.of(2024, 5, 20, 14, 30);

A partir de String

LocalDateTime dataHora = LocalDateTime.parse("2024-05-20T14:30");

Métodos comuns

As classes LocalDate, LocalTime e LocalDateTime fazem parte da API java.time e compartilham diversos métodos com comportamentos semelhantes, respeitando se o valor representa data, hora ou ambos.

Métodos de criação

MétodoDisponível emDescrição
now()Date / Time / DateTimeRetorna a data e/ou hora atual do sistema
of(...)Date / Time / DateTimeCria uma instância informando valores específicos
parse(String)Date / Time / DateTimeCria a partir de uma string no padrão ISO-8601

Métodos de adição

MétodoDisponível emDescrição
plusDays(long)Date / DateTimeAdiciona dias
plusWeeks(long)Date / DateTimeAdiciona semanas
plusMonths(long)Date / DateTimeAdiciona meses
plusYears(long)Date / DateTimeAdiciona anos
plusHours(long)Time / DateTimeAdiciona horas
plusMinutes(long)Time / DateTimeAdiciona minutos
plusSeconds(long)Time / DateTimeAdiciona segundos

Métodos de subtração

MétodoDisponível emDescrição
minusDays(long)Date / DateTimeSubtrai dias
minusWeeks(long)Date / DateTimeSubtrai semanas
minusMonths(long)Date / DateTimeSubtrai meses
minusYears(long)Date / DateTimeSubtrai anos
minusHours(long)Time / DateTimeSubtrai horas
minusMinutes(long)Time / DateTimeSubtrai minutos
minusSeconds(long)Time / DateTimeSubtrai segundos

Métodos de comparação

MétodoDisponível emDescrição
isBefore(...)Date / Time / DateTimeVerifica se é anterior
isAfter(...)Date / Time / DateTimeVerifica se é posterior
isEqual(...)Date / Time / DateTimeVerifica se é igual

Métodos de acesso a valores

MétodoDisponível emDescrição
getYear()Date / DateTimeRetorna o ano
getMonth()Date / DateTimeRetorna o mês (Month)
getMonthValue()Date / DateTimeRetorna o mês como número
getDayOfMonth()Date / DateTimeRetorna o dia do mês
getHour()Time / DateTimeRetorna a hora
getMinute()Time / DateTimeRetorna o minuto
getSecond()Time / DateTimeRetorna o segundo

Métodos de modificação (imutáveis)

MétodoDisponível emDescrição
withYear(int)Date / DateTimeAltera o ano
withMonth(int)Date / DateTimeAltera o mês
withDayOfMonth(int)Date / DateTimeAltera o dia
withHour(int)Time / DateTimeAltera a hora
withMinute(int)Time / DateTimeAltera o minuto
withSecond(int)Time / DateTimeAltera o segundo

Métodos utilitários

MétodoDisponível emDescrição
toString()Date / Time / DateTimeRetorna o valor no formato ISO
equals(Object)Date / Time / DateTimeCompara valores
hashCode()Date / Time / DateTimeSuporte a coleções
Todas as classes da API java.time são imutáveis.
Qualquer método que “altera” valores retorna uma nova instância.