Period und Duration
Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy. Lektion 57 von 59.
Period stellt einen datumsbasierten Zeitraum dar (Jahre, Monate, Tage), während Duration einen zeitbasierten Zeitraum darstellt (Stunden, Minuten, Sekunden).
Erstelle einen Zeitraum:
Period period = Period.of(1, 2, 15);
// 1 Jahr, 2 Monate, 15 TageErstelle eine Duration:
Duration duration = Duration.ofHours(2);
// 2 Stunden
Duration minutes = Duration.ofMinutes(90);
// 90 MinutenNach der Ausführung des obigen Codes enthält period:
P1Y2M15D // ISO-8601-FormatMiss den Abstand zwischen zwei Datumsangaben mit Period.between(). Die Methode nimmt zwei LocalDate-Werte entgegen und teilt den Abstand in Jahre, Monate und Tage auf:
LocalDate start = LocalDate.of(2024, 1, 15);
LocalDate end = LocalDate.of(2025, 3, 20);
Period p = Period.between(start, end);
p.getYears(); // 1
p.getMonths(); // 2
p.getDays(); // 5getDays() gibt nur die Tage zurück, die nach den vollen Jahren und Monaten übrig bleiben, nicht die Gesamtzahl der Tage zwischen den beiden Datumsangaben. Ein LocalDateTime liefert dir sein Datum mit toLocalDate().
Miss die Zeitspanne zwischen zwei Zeitpunkten mit Duration.between(), das zwei Werte vom Typ LocalDateTime (oder LocalTime) entgegennimmt:
LocalDateTime from = LocalDateTime.of(2024, 3, 15, 10, 30);
LocalDateTime to = LocalDateTime.of(2024, 3, 15, 14, 45);
Duration d = Duration.between(from, to);
d.toHours(); // 4
d.toMinutes(); // 255
d.toMinutesPart(); // 15toMinutes() zählt die gesamte Zeitspanne in Minuten, einschließlich der Stunden. toMinutesPart() gibt die Minuten an, die nach den vollen Stunden übrig bleiben. Diese Zeitspanne beträgt also 4 Stunden und 15 Minuten.
Aufgabe
EinfachErstelle eine Methode namens calculateDifference, die vier Argumente entgegennimmt:
- Einen String (
start) im Format "yyyy-MM-dd HH:mm" - Einen String (
end) im Format "yyyy-MM-dd HH:mm" - Einen String (
unit), entweder "period" oder "duration" - Einen String (
format), entweder "full" oder "simple"
Die Methode soll:
- Die Differenz zwischen den Start- und Enddaten berechnen
- Die Differenz im angegebenen Format zurückgeben
Die zurückzugebenden Meldungen sind:
- Bei ungültigen Datumsangaben: "Invalid date format" zurückgeben
- Bei einer ungültigen Einheit: "Invalid unit" zurückgeben
- Bei einem ungültigen Format: "Invalid format"
- Für einen Zeitraum mit dem Format "full": "Years: X, Months: Y, Days: Z"
- Für einen Zeitraum mit dem Format "simple": "XyYmZd"
- Für eine Dauer mit dem Format "full": "Hours: X, Minutes: Y", wobei Y die Minuten sind, die nach Abzug der vollen Stunden übrig bleiben
- Für eine Dauer mit dem Format "simple": "XhYm"
Probier es selbst
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) {
// Schreibe deinen Code hier
}
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));
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen der 2D-ArraysZugriff auf 2D-Array-ElementeVerschachtelte Schleifen mit 2D-ArraysZusammenfassung - 2D-ArraysMatrixaddition & SubtraktionJagged Arrays3D-Arrays und darüber hinausGängige 2D-Array-MusterZusammenfassung - Alles über Arrays4HashSet Teil 1
Was ist ein HashSet?Ein Element hinzufügenEin Element entfernenPrüfen, ob ein Element vorhanden istLeer und GrößeLeeren und KlonenZusammenfassung - HashSet10Datum und Zeit
LocalDate GrundlagenLocalTime OperationenLocalDateTime VerwendungPeriod und DurationDatumsformatierungZeitzonenbehandlung2HashMap Teil 1
Was ist eine HashMap?Eine HashMap deklarierenWerte abrufenPrüfen, ob ein Schlüssel existiertWörterbücher modifizierenZusammenfassung - HashMap3HashMap Teil 2
HashMap-MethodenMit keySet() iterierenMit entrySet() iterierenVerschachtelte HashMapZusammenfassung - Lager verwaltenZusammenfassung - HashMap-Operationen6Erweiterter Steuerungsfluss
Beschriftete AnweisungenSwitch-AusdruckMusterabgleichSchutzklauselnZusammenfassung - Steuerungsfluss9Projekt - Einzigartiger Wortzähler
Texteingabe und SpeicherungWortverarbeitungÜbe selbstständig: Online-Java-Compiler