Create and manipulate calendar data

Para criar e manipular dados de calendário em Java, você pode utilizar as classes do pacote java.time. Aqui estão exemplos de como trabalhar com LocalDateTime, LocalDate, LocalTime, DateTimeFormatter e Period:

1. Trabalhando com LocalDateTime:

import java.time.LocalDateTime;

// Criando um LocalDateTime representando o momento atual
LocalDateTime agora = LocalDateTime.now();

// Criando um LocalDateTime específico
LocalDateTime dataHoraEspecifica = LocalDateTime.of(2022, 1, 1, 12, 0);

// Adicionando 1 hora ao LocalDateTime
LocalDateTime futuro = agora.plusHours(1);

System.out.println("Agora: " + agora);
System.out.println("Data e Hora Específica: " + dataHoraEspecifica);
System.out.println("Futuro: " + futuro);

2. Trabalhando com LocalDate e LocalTime:

import java.time.LocalDate;
import java.time.LocalTime;

// Criando um LocalDate representando a data atual
LocalDate hoje = LocalDate.now();

// Criando um LocalTime específico
LocalTime horario = LocalTime.of(14, 30);

System.out.println("Hoje: " + hoje);
System.out.println("Horário: " + horario);

3. Formatando e Parseando Data e Hora com DateTimeFormatter:

import java.time.format.DateTimeFormatter;

// Formatando LocalDateTime para string
DateTimeFormatter formatador = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
String agoraFormatado = agora.format(formatador);

// Parseando string para LocalDateTime
LocalDateTime dataHoraParseada = LocalDateTime.parse("25/12/2022 18:30:00", formatador);

System.out.println("Agora Formatado: " + agoraFormatado);
System.out.println("Data e Hora Parseada: " + dataHoraParseada);

4. Calculando Diferença entre Datas com Period:

import java.time.Period;

// Criando duas datas
LocalDate dataInicial = LocalDate.of(2022, 1, 1);
LocalDate dataFinal = LocalDate.of(2022, 12, 31);

// Calculando a diferença em anos, meses e dias
Period diferenca = Period.between(dataInicial, dataFinal);

System.out.println("Diferença: " + diferenca.getYears() + " anos, " + diferenca.getMonths() + " meses, " + diferenca.getDays() + " dias");

Esses exemplos mostram como criar, manipular, formatar e calcular diferenças entre datas e horas usando as classes do pacote java.time. Lembre-se de que essas classes fornecem uma API mais moderna e robusta para trabalhar com data e hora em comparação com as classes mais antigas, como Date e Calendar.

Para calcular a diferença em horas, minutos e segundos entre duas instâncias de LocalTime em Java, você pode usar a classe Duration. Aqui está um exemplo:

import java.time.LocalTime;
import java.time.Duration;

public class CalculoDiferencaHorasMinutosSegundos {
    public static void main(String[] args) {
        // Criando duas instâncias de LocalTime
        LocalTime tempo1 = LocalTime.of(10, 30, 0);
        LocalTime tempo2 = LocalTime.of(13, 45, 30);

        // Calculando a diferença em segundos
        Duration diferenca = Duration.between(tempo1, tempo2);

        // Obtendo a diferença em horas, minutos e segundos
        long horas = diferenca.toHours();
        long minutos = diferenca.toMinutesPart();
        long segundos = diferenca.toSecondsPart();

        System.out.println("Diferença em horas: " + horas);
        System.out.println("Diferença em minutos: " + minutos);
        System.out.println("Diferença em segundos: " + segundos);
    }
}

Neste exemplo:

  1. LocalTime.of(10, 30, 0) cria uma instância de LocalTime representando as 10:30:00.
  2. LocalTime.of(13, 45, 30) cria uma instância de LocalTime representando as 13:45:30.
  3. Duration.between(tempo1, tempo2) calcula a diferença entre esses dois tempos, resultando em uma duração.
  4. diferenca.toHours(), diferenca.toMinutesPart(), e diferenca.toSecondsPart() são usados para obter a diferença em horas, minutos e segundos, respectivamente.

Este exemplo ilustra como utilizar Duration para calcular a diferença entre duas instâncias de LocalTime em termos de horas, minutos e segundos.