Menu
Coddy logo textTech

Period y Duration

Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 57 de 59.

Period representa una cantidad de tiempo basada en fechas (años, meses, días), mientras que Duration representa una cantidad basada en tiempo (horas, minutos, segundos).

Crear un Periodo:

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

Crear una Duration:

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

Después de ejecutar el código anterior, period contiene:

P1Y2M15D  // ISO-8601 format
challenge icon

Desafío

Fácil

Crea un método llamado calculateDifference que tome cuatro argumentos:

  1. Una String (start) en formato "yyyy-MM-dd HH:mm"
  2. Una String (end) en formato "yyyy-MM-dd HH:mm"
  3. Una String (unit) ya sea "period" o "duration"
  4. Una String (format) ya sea "full" o "simple"

El método debe:

  1. Calcular la diferencia entre las fechas de inicio y fin
  2. Devolver la diferencia en el formato especificado

Los mensajes de retorno deben ser:

  • Si las fechas son inválidas: devolver "Invalid date format"
  • Si la unidad es inválida: devolver "Invalid unit"
  • Si el formato es inválido: devolver "Invalid format"
  • Para period con formato "full": "Years: X, Months: Y, Days: Z"
  • Para period con formato "simple": "XyYmZd"
  • Para duration con formato "full": "Hours: X, Minutes: Y"
  • Para duration con formato "simple": "XhYm"

Hoja de referencia

Period representa cantidades basadas en fechas (años, meses, días), mientras que Duration representa cantidades basadas en tiempo (horas, minutos, segundos).

Crear un Period:

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

Crear una Duration:

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

Period utiliza el formato ISO-8601:

P1Y2M15D  // 1 year, 2 months, 15 days

Pruébalo tú mismo

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) {
        // Escribe tu código aquí
    }
    
    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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo