🧩 Exercícios: Manipulação de Datas e Horas (java.time API)
Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 07.1 — LocalDate, LocalTime e LocalDateTime no Java 21
Contexto: LocalDate, LocalTime e LocalDateTime no Java 21 no contexto de Manipulação de Datas e Horas (java.time API).
Requisitos de Execução:
- Obter data e hora atuais e formatar no padrão brasileiro
dd/MM/yyyy HH:mm:ss.
Resultado Esperado
Data e hora formatadas com DateTimeFormatter.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_1_SeuNome - Envie na tarefa:
Atividade Cap 07 - Manipulação de Datas e Horas (java.time API)
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DataDemo {
public static void main(String[] args) {
LocalDateTime agora = LocalDateTime.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
System.out.println("Data Formatada: " + agora.format(fmt));
}
}
🔍 Nível 2: Prática
Problema 07.2 — Cálculo de Períodos e Durações com Period e Duration
Contexto: Cálculo de Períodos e Durações com Period e Duration no contexto de Manipulação de Datas e Horas (java.time API).
Requisitos de Execução:
- Calcular dias e horas entre duas datas utilizando
Period.betweeneDuration.between.
Resultado Esperado
Diferença temporal calculada com precisão.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_2_SeuNome - Envie na tarefa:
Atividade Cap 07 - Manipulação de Datas e Horas (java.time API)
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.time.LocalDate;
import java.time.Period;
public class PeriodoDemo {
public static void main(String[] args) {
LocalDate d1 = LocalDate.of(2026, 1, 1);
LocalDate d2 = LocalDate.of(2026, 8, 29);
Period p = Period.between(d1, d2);
System.out.printf("Periodo: %d meses e %d dias%n", p.getMonths(), p.getDays());
}
}
⚡ Nível 3: Integração
Problema 07.3 — Timestamp Global com Instant e Ajuste de Fuso Horário com ZoneId
Contexto: Timestamp Global com Instant e Ajuste de Fuso Horário com ZoneId no contexto de Manipulação de Datas e Horas (java.time API).
Requisitos de Execução:
- Converter
Instant.now()UTC para o fuso horário de São PauloZoneId.of('America/Sao_Paulo').
Resultado Esperado
Data e hora convertidas com tratamento correto de timezone.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_3_SeuNome - Envie na tarefa:
Atividade Cap 07 - Manipulação de Datas e Horas (java.time API)
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class TimezoneDemo {
public static void main(String[] args) {
Instant agoraUtc = Instant.now();
ZonedDateTime sp = agoraUtc.atZone(ZoneId.of("America/Sao_Paulo"));
System.out.println("Sao Paulo Time: " + sp);
}
}
🏆 Nível 4: Desafio Corporativo
Problema 07.4 — Ajustadores Temporais Customizados com TemporalAdjusters
Contexto: Ajustadores Temporais Customizados com TemporalAdjusters no contexto de Manipulação de Datas e Horas (java.time API).
Requisitos de Execução:
- Calcular a próxima segunda-feira útil utilizando
TemporalAdjusters.next(DayOfWeek.MONDAY).
Resultado Esperado
Data de vencimento ajustada automaticamente para o próximo dia útil.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_4_SeuNome - Envie na tarefa:
Atividade Cap 07 - Manipulação de Datas e Horas (java.time API)
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class TemporalAdjusterDemo {
public static void main(String[] args) {
LocalDate hoje = LocalDate.now();
LocalDate proxSegunda = hoje.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println("Proxima Segunda: " + proxSegunda);
}
}