Menu
Coddy logo textTech

Period e Duration

Parte da seção Lógica e Fluxo do Journey de Java da Coddy — lição 57 de 59.

Period representa uma quantidade de tempo baseada em data (anos, meses, dias), enquanto Duration representa uma quantidade de tempo baseada em horário (horas, minutos, segundos).

Criar um Período:

Period period = Period.of(1, 2, 15);
// 1 year, 2 months, 15 days

Crie uma Duration:

Duration duration = Duration.ofHours(2);
// 2 horas
Duration minutes = Duration.ofMinutes(90);
// 90 minutos

Após executar o código acima, period contém:

P1Y2M15D  // ISO-8601 format
challenge icon

Desafio

Fácil

Crie um método chamado calculateDifference que recebe quatro argumentos:

  1. Uma String (start) no formato "yyyy-MM-dd HH:mm"
  2. Uma String (end) no formato "yyyy-MM-dd HH:mm"
  3. Uma String (unit) que seja "period" ou "duration"
  4. Uma String (format) que seja "full" ou "simple"

O método deve:

  1. Calcular a diferença entre as datas de início e fim
  2. Retornar a diferença no formato especificado

As mensagens de retorno devem ser:

  • Se datas inválidas: retornar "Invalid date format"
  • Se unidade inválida: retornar "Invalid unit"
  • Se formato inválido: retornar "Invalid format"
  • Para period com formato "full": "Years: X, Months: Y, Days: Z"
  • Para period com formato "simple": "XyYmZd"
  • Para duration com formato "full": "Hours: X, Minutes: Y"
  • Para duration com formato "simple": "XhYm"

Folha de consulta

Period representa quantidades baseadas em datas (anos, meses, dias), enquanto Duration representa quantidades baseadas em tempo (horas, minutos, segundos).

Criar um Period:

Period period = Period.of(1, 2, 15);
// 1 year, 2 months, 15 days

Criar uma Duration:

Duration duration = Duration.ofHours(2);
// 2 hours
Duration minutes = Duration.ofMinutes(90);
// 90 minutes

Period usa o formato ISO-8601:

P1Y2M15D  // 1 year, 2 months, 15 days

Experimente você mesmo

import java.util.Scanner;
import java.time.*;
import java.time.format.*;

public class Main {
    public static String calculateDifference(String start, String end, String unit, String format) {
        // Escreva seu código aqui
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String start = scanner.nextLine();
        String end = scanner.nextLine();
        String unit = scanner.nextLine();
        String format = scanner.nextLine();
        
        System.out.println(calculateDifference(start, end, unit, format));
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo