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 dataLocalTime→ representa apenas horaLocalDateTime→ 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étodo | Disponível em | Descrição |
|---|---|---|
now() | Date / Time / DateTime | Retorna a data e/ou hora atual do sistema |
of(...) | Date / Time / DateTime | Cria uma instância informando valores específicos |
parse(String) | Date / Time / DateTime | Cria a partir de uma string no padrão ISO-8601 |
Métodos de adição
| Método | Disponível em | Descrição |
|---|---|---|
plusDays(long) | Date / DateTime | Adiciona dias |
plusWeeks(long) | Date / DateTime | Adiciona semanas |
plusMonths(long) | Date / DateTime | Adiciona meses |
plusYears(long) | Date / DateTime | Adiciona anos |
plusHours(long) | Time / DateTime | Adiciona horas |
plusMinutes(long) | Time / DateTime | Adiciona minutos |
plusSeconds(long) | Time / DateTime | Adiciona segundos |
Métodos de subtração
| Método | Disponível em | Descrição |
|---|---|---|
minusDays(long) | Date / DateTime | Subtrai dias |
minusWeeks(long) | Date / DateTime | Subtrai semanas |
minusMonths(long) | Date / DateTime | Subtrai meses |
minusYears(long) | Date / DateTime | Subtrai anos |
minusHours(long) | Time / DateTime | Subtrai horas |
minusMinutes(long) | Time / DateTime | Subtrai minutos |
minusSeconds(long) | Time / DateTime | Subtrai segundos |
Métodos de comparação
| Método | Disponível em | Descrição |
|---|---|---|
isBefore(...) | Date / Time / DateTime | Verifica se é anterior |
isAfter(...) | Date / Time / DateTime | Verifica se é posterior |
isEqual(...) | Date / Time / DateTime | Verifica se é igual |
Métodos de acesso a valores
| Método | Disponível em | Descrição |
|---|---|---|
getYear() | Date / DateTime | Retorna o ano |
getMonth() | Date / DateTime | Retorna o mês (Month) |
getMonthValue() | Date / DateTime | Retorna o mês como número |
getDayOfMonth() | Date / DateTime | Retorna o dia do mês |
getHour() | Time / DateTime | Retorna a hora |
getMinute() | Time / DateTime | Retorna o minuto |
getSecond() | Time / DateTime | Retorna o segundo |
Métodos de modificação (imutáveis)
| Método | Disponível em | Descrição |
|---|---|---|
withYear(int) | Date / DateTime | Altera o ano |
withMonth(int) | Date / DateTime | Altera o mês |
withDayOfMonth(int) | Date / DateTime | Altera o dia |
withHour(int) | Time / DateTime | Altera a hora |
withMinute(int) | Time / DateTime | Altera o minuto |
withSecond(int) | Time / DateTime | Altera o segundo |
Métodos utilitários
| Método | Disponível em | Descrição |
|---|---|---|
toString() | Date / Time / DateTime | Retorna o valor no formato ISO |
equals(Object) | Date / Time / DateTime | Compara valores |
hashCode() | Date / Time / DateTime | Suporte a coleções |
Todas as classes da API
Qualquer método que “altera” valores retorna uma nova instância.
java.time são imutáveis.Qualquer método que “altera” valores retorna uma nova instância.