Menu
CoddyTech

Utilizzo di LocalDateTime

Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 56 di 59.

LocalDateTime in Java combina sia la data che l’ora. È utile quando devi lavorare con entrambi i componenti, come gli orari degli eventi o i timestamp.

Crea la data e l'ora correnti

LocalDateTime now = LocalDateTime.now();

Crea una data e un'ora specifiche:

LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
// 2024-03-15 14:30

Dopo aver eseguito il codice precedente, dateTime contiene:

2024-03-15T14:30

Formatta una data e un'ora:

LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
String formatted = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));

Analizza una data e un'ora da una String con lo stesso formato:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime parsed = LocalDateTime.parse("2024-03-15 14:30", formatter);  // 2024-03-15T14:30

Senza un formattatore, LocalDateTime.parse() accetta solo il formato ISO 2024-03-15T14:30. Una stringa che non corrisponde al modello genera una DateTimeParseException, quindi racchiudi la chiamata in un blocco try-catch, come hai fatto con LocalDate.parse().

challenge icon

Sfida

Facile

Crea un metodo denominato processDateTime che accetta quattro argomenti:

  1. Una String (dateTimeStr) nel formato "yyyy-MM-dd HH:mm"
  2. Un intero (amount) da aggiungere o sottrarre
  3. Una String (unit) tra "hours", "days" o "months"
  4. Una String (operation) tra "add" o "subtract"

Il metodo deve:

  1. Analizzare la stringa di data e ora in input
  2. Eseguire l'operazione specificata
  3. Restituire informazioni formattate sul risultato

I messaggi restituiti devono essere:

  • Se il formato non è valido: restituire "Invalid date time format"
  • Se l'unità non è valida: restituire "Invalid unit"
  • Se l'operazione non è valida: restituire "Invalid operation"
  • In caso di esito positivo: restituire "Original: [datetime], New: [new_datetime], Day: [day_name]", con entrambe le date e ore nel formato yyyy-MM-dd HH:mm e [day_name] che indica il giorno della settimana della nuova data e ora in lettere maiuscole (ad es. FRIDAY)

Provalo tu

import java.util.Scanner;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class Main {
    public static String processDateTime(String dateTimeStr, int amount, String unit, String operation) {
        // Scrivi qui il tuo codice
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String dateTimeStr = scanner.nextLine();
        int amount = Integer.parseInt(scanner.nextLine());
        String unit = scanner.nextLine();
        String operation = scanner.nextLine();
        
        System.out.println(processDateTime(dateTimeStr, amount, unit, operation));
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Java online