Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Diferença entre horas

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
1 resposta
solução!

Olá, Raoni! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de herança para estender a classe Tarefa, utilizou muito bem as classes Period e Duration para calcular diferenças entre datas e horas e ainda compreendeu a importância da sobrescrita do método toString para apresentar os resultados de forma clara e organizada.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!