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 daysCrear una Duration:
Duration duration = Duration.ofHours(2);
// 2 horas
Duration minutes = Duration.ofMinutes(90);
// 90 minutosDespués de ejecutar el código anterior, period contiene:
P1Y2M15D // ISO-8601 formatDesafío
FácilCrea un método llamado calculateDifference que tome cuatro argumentos:
- Una String (
start) en formato "yyyy-MM-dd HH:mm" - Una String (
end) en formato "yyyy-MM-dd HH:mm" - Una String (
unit) ya sea "period" o "duration" - Una String (
format) ya sea "full" o "simple"
El método debe:
- Calcular la diferencia entre las fechas de inicio y fin
- 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 daysCrear una Duration:
Duration duration = Duration.ofHours(2);
// 2 hours
Duration minutes = Duration.ofMinutes(90);
// 90 minutesPeriod utiliza el formato ISO-8601:
P1Y2M15D // 1 year, 2 months, 15 daysPrué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));
}
}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
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas10Fecha y Hora
Fundamentos de LocalDateOperaciones con LocalTimeUso de LocalDateTimePeriod y DurationFormato de fechasManejo de zonas horarias2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras