Period e Duration
Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 57 di 59.
Period rappresenta un intervallo di tempo basato sulla data (anni, mesi, giorni), mentre Duration rappresenta un intervallo basato sul tempo (ore, minuti, secondi).
Crea un Period:
Period period = Period.of(1, 2, 15);
// 1 anno, 2 mesi, 15 giorniCrea una durata:
Duration duration = Duration.ofHours(2);
// 2 ore
Duration minutes = Duration.ofMinutes(90);
// 90 minutiDopo aver eseguito il codice qui sopra, period contiene:
P1Y2M15D // formato ISO-8601Misura l'intervallo tra due date con Period.between(). Accetta due valori LocalDate e suddivide l'intervallo in anni, mesi e giorni:
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() restituisce solo i giorni rimanenti dopo gli anni e i mesi interi, non il numero totale di giorni tra le due date. Un LocalDateTime ti fornisce la sua data con toLocalDate().
Misura l'intervallo tra due orari con Duration.between(), che accetta due valori LocalDateTime (o 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() conta l'intero intervallo in minuti, comprese le ore. toMinutesPart() restituisce i minuti rimanenti dopo aver conteggiato le ore intere, quindi questo intervallo è di 4 ore e 15 minuti.
Sfida
FacileCrea un metodo denominato calculateDifference che accetta quattro argomenti:
- Una String (
start) nel formato "yyyy-MM-dd HH:mm" - Una String (
end) nel formato "yyyy-MM-dd HH:mm" - Una String (
unit) che può essere "period" o "duration" - Una String (
format) che può essere "full" o "simple"
Il metodo deve:
- Calcolare la differenza tra le date di inizio e di fine
- Restituire la differenza nel formato specificato
I messaggi restituiti devono essere:
- Se le date non sono valide: restituire "Invalid date format"
- Se l’unità non è valida: restituire "Invalid unit"
- Se il formato non è valido: restituire "Invalid format"
- Per period con formato "full": "Years: X, Months: Y, Days: Z"
- Per period con formato "simple": "XyYmZd"
- Per duration con formato "full": "Hours: X, Minutes: Y", dove Y indica i minuti rimanenti dopo aver conteggiato le ore intere
- Per duration con formato "simple": "XhYm"
Provalo tu
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) {
// Scrivi il tuo codice qui
}
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));
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Concetti di base degli array 2DAccesso agli elementi degli array 2DCicli annidati con array 2DRiepilogo - Array 2DAddizione e sottrazione di matriciArray irregolariArray 3D e oltreSchemi comuni degli array 2DRiepilogo - Tutto sugli array4HashSet Parte 1
Che cos'è un HashSet?Aggiungere un elementoRimuovere un elementoVerificare se un elemento esisteVuoto e dimensioneSvuotare e clonareRipasso - HashSet7Gestione di base degli errori
Nozioni di base su try-catchBlocco finallyLancio di eccezioniEccezioni personalizzate2HashMap Parte 1
Che cos'è una HashMap?Dichiarare una HashMapAccedere ai valoriVerificare se una chiave esisteModificare i dizionariRiepilogo - HashMap3HashMap Parte 2
Metodi di HashMapIterare con keySet()Iterare con entrySet()HashMap annidateRiepilogo - Gestire il magazzinoRiepilogo - Operazioni con HashMap6Flusso di controllo avanzato
Istruzioni con etichettaEspressione switchCorrispondenza dei patternClausole guardiaRiepilogo - Flusso di controllo9Progetto - Contatore di parole uniche
Inserimento e memorizzazione del testoElaborazione delle paroleEsercitati da solo: Compilatore Java online