Menu
CoddyTech

Uso do LocalDateTime

Parte da seção Lógica e Fluxo do Journey de Java da Coddy. Lição 56 de 59.

LocalDateTime em Java combina data e hora. É útil quando você precisa trabalhar com os dois componentes, como horários de eventos ou registros de data e hora.

Criar data e hora atuais

LocalDateTime now = LocalDateTime.now();

Crie uma data e hora específicas:

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

Após executar o código acima, dateTime contém:

2024-03-15T14:30

Formate uma data e hora:

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

Analise uma data e hora de uma String com o mesmo padrão:

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

Sem um formatador, LocalDateTime.parse() aceita apenas o formato ISO 2024-03-15T14:30. Uma string que não corresponde ao padrão lança uma DateTimeParseException, então envolva a chamada em try-catch, como você fez com LocalDate.parse().

challenge icon

Desafio

Fácil

Crie um método chamado processDateTime que receba quatro argumentos:

  1. Uma String (dateTimeStr) no formato "yyyy-MM-dd HH:mm"
  2. Um inteiro (amount) para adicionar ou subtrair
  3. Uma String (unit) que seja "hours", "days" ou "months"
  4. Uma String (operation) que seja "add" ou "subtract"

O método deve:

  1. Analisar a string de data e hora de entrada
  2. Executar a operação especificada
  3. Retornar informações formatadas sobre o resultado

As mensagens retornadas devem ser:

  • Se o formato for inválido: retornar "Invalid date time format"
  • Se a unidade for inválida: retornar "Invalid unit"
  • Se a operação for inválida: retornar "Invalid operation"
  • Em caso de sucesso: retornar "Original: [datetime], New: [new_datetime], Day: [day_name]", com ambas as datas e horas escritas como yyyy-MM-dd HH:mm e [day_name] sendo o dia da semana da nova data e hora em letras maiúsculas (por exemplo, FRIDAY)

Experimente você mesmo

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) {
        // Escreva seu código aqui
    }
    
    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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de Java online