Period i Duration
Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 57 z 59.
Period reprezentuje okres czasu oparty na dacie (lata, miesiące, dni), natomiast Duration reprezentuje okres oparty na czasie (godziny, minuty, sekundy).
Utwórz okres:
Period period = Period.of(1, 2, 15);
// 1 rok, 2 miesiące, 15 dniUtwórz obiekt Duration:
Duration duration = Duration.ofHours(2);
// 2 godziny
Duration minutes = Duration.ofMinutes(90);
// 90 minutPo wykonaniu powyższego kodu period zawiera:
P1Y2M15D // format ISO-8601Zmierz odstęp między dwiema datami za pomocą Period.between(). Przyjmuje dwie wartości LocalDate i dzieli odstęp na lata, miesiące i dni:
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() zwraca tylko pozostałe dni po uwzględnieniu pełnych lat i miesięcy, a nie łączną liczbę dni między dwiema datami. LocalDateTime udostępnia swoją datę za pomocą toLocalDate().
Zmierz odstęp między dwiema porami za pomocą Duration.between(), która przyjmuje dwie wartości typu LocalDateTime (lub LocalTime):
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() zlicza cały odstęp w minutach, łącznie z godzinami. toMinutesPart() zwraca pozostałe minuty po odliczeniu pełnych godzin, więc ten odstęp wynosi 4 godziny i 15 minut.
Wyzwanie
ŁatwyUtwórz metodę o nazwie calculateDifference, która przyjmuje cztery argumenty:
- String (
start) w formacie "yyyy-MM-dd HH:mm" - String (
end) w formacie "yyyy-MM-dd HH:mm" - String (
unit) równy "period" lub "duration" - String (
format) równy "full" lub "simple"
Metoda powinna:
- Obliczyć różnicę między datami początkową i końcową
- Zwrócić różnicę w określonym formacie
Zwracane komunikaty powinny być następujące:
- Jeśli daty są nieprawidłowe: zwróć "Invalid date format"
- Jeśli jednostka jest nieprawidłowa: zwróć "Invalid unit"
- Jeśli format jest nieprawidłowy: zwróć "Invalid format"
- Dla okresu w formacie "full": "Years: X, Months: Y, Days: Z"
- Dla okresu w formacie "simple": "XyYmZd"
- Dla czasu trwania w formacie "full": "Hours: X, Minutes: Y", gdzie Y to pozostałe minuty po odjęciu pełnych godzin
- Dla czasu trwania w formacie "simple": "XhYm"
Spróbuj swoich sił
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) {
// Wpisz tutaj swój kod
}
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));
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach4HashSet — część 1
Czym jest HashSet?Dodawanie elementuUsuwanie elementuSprawdzanie, czy element istniejePusty i rozmiarCzyszczenie i klonowaniePodsumowanie — HashSet10Data i czas
Podstawy LocalDateOperacje na LocalTimeZastosowanie LocalDateTimePeriod i DurationFormatowanie datObsługa stref czasowych2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online