Period e Duration
Parte da seção Lógica e Fluxo do Journey de Java da Coddy. Lição 57 de 59.
Period representa uma quantidade de tempo baseada em datas (anos, meses, dias), enquanto Duration representa uma quantidade baseada em tempo (horas, minutos, segundos).
Crie um período:
Period period = Period.of(1, 2, 15);
// 1 ano, 2 meses, 15 diasCrie uma duração:
Duration duration = Duration.ofHours(2);
// 2 horas
Duration minutes = Duration.ofMinutes(90);
// 90 minutosApós executar o código acima, period contém:
P1Y2M15D // formato ISO-8601Meça o intervalo entre duas datas com Period.between(). Ele recebe dois valores LocalDate e divide o intervalo em anos, meses e dias:
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() retorna apenas os dias restantes após considerar os anos e meses completos, não o número total de dias entre as duas datas. Um LocalDateTime fornece sua data com toLocalDate().
Meça o intervalo entre dois horários com Duration.between(), que recebe dois valores LocalDateTime (ou 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 o intervalo total em minutos, incluindo as horas. toMinutesPart() retorna os minutos restantes depois das horas completas, então esse intervalo é de 4 horas e 15 minutos.
Desafio
FácilCrie um método chamado calculateDifference que receba quatro argumentos:
- Uma String (
start) no formato "yyyy-MM-dd HH:mm" - Uma String (
end) no formato "yyyy-MM-dd HH:mm" - Uma String (
unit) que seja "period" ou "duration" - Uma String (
format) que seja "full" ou "simple"
O método deve:
- Calcular a diferença entre as datas de início e término
- Retornar a diferença no formato especificado
As mensagens retornadas devem ser:
- Se as datas forem inválidas: retornar "Invalid date format"
- Se a unidade for inválida: retornar "Invalid unit"
- Se o formato for inválido: retornar "Invalid format"
- Para o período com o formato "full": "Years: X, Months: Y, Days: Z"
- Para o período com o formato "simple": "XyYmZd"
- Para a duração com o formato "full": "Hours: X, Minutes: Y", em que Y são os minutos restantes após as horas completas
- Para a duração com o formato "simple": "XhYm"
Experimente você mesmo
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) {
// Escreva seu código aqui
}
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));
}
}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
1Arrays Multidimensionais
Básicos de Arrays 2DAcessando Elementos de Arrays 2DLoops Aninhados com Arrays 2DResumo - Arrays 2DAdição e Subtração de MatrizesArrays EscalonadosArrays 3D e AlémPadrões Comuns de Arrays 2DResumo - Tudo Sobre Arrays4HashSet Parte 1
O que é um HashSet?Adicionando um ElementoRemovendo um ElementoVerificando se um Elemento ExisteVazio e TamanhoLimpar e ClonarResumo - HashSet10Data e Hora
Básicos do LocalDateOperações com LocalTimeUso do LocalDateTimePeriod e DurationFormatação de DataTratamento de Fuso Horário2HashMap Parte 1
O que é um HashMap?Declarar um HashMapAcessando ValoresVerificar se a Chave ExisteModificando DicionáriosResumo - HashMap3HashMap Parte 2
Métodos do HashMapIterar com keySet()Iterar com entrySet()HashMap AninhadoResumo - Gerenciar ArmazémResumo - Operações do HashMap6Fluxo de Controle Avançado
Declarações RotuladasExpressão SwitchCorrespondência de PadrõesCláusulas de GuardaResumo - Fluxo de Controle9Projeto - Contador de Palavras Únicas
Entrada e Armazenamento de TextoProcessamento de PalavrasPratique por conta própria: Compilador de Java online