📊 Capítulo 07: java.time API & Fusos Horários
Especialização em Sistemas com Java
🗺️ A Taxonomia da API Moderna de Datas (java.time / JSR-310)
flowchart TD
ROOT["java.time (Classes 100% Imutáveis e Thread-Safe!)"]
--> LOCAL["Data/Hora Local (Sem Fuso Horário)"]
LOCAL --> D1["LocalDate (2026-09-01)"]
LOCAL --> D2["LocalDateTime (2026-09-01T14:30:00)"]
ROOT --> GLOBAL["Data/Hora Global (Com Fuso Horário)"]
GLOBAL --> G1["Instant (Momento exato no tempo UTC / Milissegundos desde a Epoch 1970)"]
GLOBAL --> G2["ZonedDateTime (2026-09-01T14:30:00-03:00[America/Sao_Paulo])"]
ROOT --> INTERVAL["Intervalos"]
INTERVAL --> I1["Duration (Tempo em horas, minutos, segundos)"]
INTERVAL --> I2["Period (Tempo em anos, meses, dias)"]
style ROOT fill:#ede7f6,stroke:#512da8,stroke-width:2px
style LOCAL fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style GLOBAL fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style INTERVAL fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
🎯 Slide 1: O Fim das Classes Arcaicas Date e Calendar
-
java.util.DateeSimpleDateFormateram mutáveis e NÃO eram thread-safe, causando corrupção silenciosa de dados em sistemas concorrentes web! - Todas as classes do pacote
java.timesão estritamente imutáveis.
🎯 Slide 2: Formatação com DateTimeFormatter
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
LocalDateTime agora = LocalDateTime.now();
String texto = agora.format(fmt);
LocalDateTime dataConvertida = LocalDateTime.parse("01/09/2026 14:30", fmt);
🎯 Slide 3: Cálculos de Intervalos com ChronoUnit
LocalDate pastWeek = LocalDate.now().minusWeeks(1);
long dias = ChronoUnit.DAYS.between(pastWeek, LocalDate.now());
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim