Segue a resolução do exercício.
Classe TrefaProjetos:
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Period;
public class TarefaProjetos extends Tarefa {
private String dataFim;
private String horaFim;
private Period period;
private Duration duracao;
public TarefaProjetos(String descricao, LocalDateTime inicio, LocalDateTime fim) {
super(descricao, inicio);
this.dataFim = fim.toLocalDate().toString();
this.horaFim = fim.toLocalTime().toString();
this.period = Period.between(inicio.toLocalDate(), fim.toLocalDate());
this.duracao = Duration.between(inicio, fim);
}
public String getDataFim() {
return dataFim;
}
public void setDataFim(String dataFim) {
this.dataFim = dataFim;
}
public String getHoraFim() {
return horaFim;
}
public Period getPeriod() {
return period;
}
public Duration getDuracao() {
return duracao;
}
@Override
public String toString() {
return "\nDescricao: " + super.getDescricao() +
"\nData Início: " + super.getDataInicio() +
"\nHora Início: " + super.getHoraInicio().substring(0,5) +
"\nData Fim: " + getDataFim() +
"\nHora Fim: " + getHoraFim() +
"\nDuracao: " +
getPeriod().getYears() + " anos, " +
getPeriod().getMonths() + " meses, " +
getPeriod().getDays() + " dias e " +
getDuracao().toHours() % 24 + " horas.\n";
}
}
Classe DiferencaEntreHoras:
import java.text.ParseException;
import java.time.LocalDateTime;
import java.util.Scanner;
public class DiferencaEntreHoras {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Digite a descricao do Projeto: ");
String descricaoProjeto = input.nextLine();
System.out.println("Digite a data de término do Projeto (yyyy-MM-dd): ");
String dataProjeto = input.nextLine();
System.out.println("Digite a hora de término do Projeto (HH:mm): ");
String horaProjeto = input.nextLine();
String data = dataProjeto + 'T' + horaProjeto;
try {
LocalDateTime dataFimProjeto = LocalDateTime.parse(data);
TarefaProjetos tarefaProjetos = new TarefaProjetos(descricaoProjeto,
LocalDateTime.now(),
dataFimProjeto);
System.out.println("\nTarefa Projetos: " + tarefaProjetos.toString());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Output:
Digite a descricao do Projeto:
Curso FGV
Digite a data de término do Projeto (yyyy-MM-dd):
2027-03-20
Digite a hora de término do Projeto (HH:mm):
00:00
Tarefa Projetos:
Descricao: Curso FGV
Data Início: 2026-01-25
Hora Início: 21:20
Data Fim: 2027-03-20
Hora Fim: 00:00
Duracao: 1 anos, 1 meses, 23 dias e 2 horas.
Process finished with exit code 0