O que é e para que serve?
Trabalhar com datas e horas é uma das tarefas mais comuns na programação em Java. A biblioteca padrão java.time (introduzida no Java 8) fornece uma API poderosa e intuitiva para processar datas, horas, fusos horários e períodos. Antes do Java 8, os desenvolvedores frequentemente usavam a biblioteca de terceiros Joda-Time, que se tornou o protótipo para java.time. Ambas as bibliotecas resolvem os problemas dos antigos java.util.Date e java.util.Calendar: segurança de thread, imutabilidade de objetos e métodos convenientes de formatação.
Como instalar?
java.time está embutido no Java 8 e versões mais recentes — não é necessária instalação. Para Joda-Time, adicione a dependência no Maven:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.12.5</version>
</dependency>Para Gradle: implementation 'joda-time:joda-time:2.12.5'.
Funções principais
- LocalDate, LocalTime, LocalDateTime — trabalhar com data/hora sem fuso horário.
- ZonedDateTime, OffsetDateTime — consideração de fusos horários.
- Period, Duration — diferença entre datas e horas.
- DateTimeFormatter — formatação e análise flexíveis.
- Instant — momento no tempo em UTC.
Exemplo de código em Java
import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateExample {
public static void main(String[] args) {
// Data atual
LocalDate today = LocalDate.now();
System.out.println("Hoje: " + today);
// Criando uma data específica
LocalDate specificDate = LocalDate.of(2025, Month.MARCH, 15);
System.out.println("Data específica: " + specificDate);
// Diferença entre datas
Period period = Period.between(specificDate, today);
System.out.println("Diferença: " + period.getYears() + " anos, " + period.getMonths() + " meses, " + period.getDays() + " dias");
// Formatação
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
String formatted = today.format(formatter);
System.out.println("Formatado: " + formatted);
// Análise de string
LocalDate parsed = LocalDate.parse("01.01.2024", formatter);
System.out.println("Analisado: " + parsed);
// Trabalhando com horas e fusos
ZonedDateTime zoned = ZonedDateTime.now(ZoneId.of("Europe/Moscow"));
System.out.println("Horário de Moscou: " + zoned);
}
}Quando usar
java.time é a escolha principal para todos os novos projetos em Java 8+. Use-o para: cálculo de idade, prazos, logs com timestamps, agendadores de tarefas, trabalho com calendários e fusos horários. Joda-Time é útil para dar suporte a projetos antigos ou se forem necessárias funções adicionais, como Interval ou MutableDateTime. Ambas as bibliotecas simplificam significativamente o código em comparação com o obsoleto Calendar.
Também na biblioteca
Symfony para PHP: guia completo com exemplos
Colly para Go: guia completo com exemplos práticos
Cliente OAuth para Kotlin: integração com provedores via ktor-client e kotlinx-serialization
Envio de SMS em Swift (iOS/macOS): API da biblioteca MessageUI