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 data (anos, meses, dias), enquanto Duration representa uma quantidade de tempo baseada em horário (horas, minutos, segundos).
Criar um Período:
Period period = Period.of(1, 2, 15);
// 1 year, 2 months, 15 daysCrie uma Duration:
Duration duration = Duration.ofHours(2);
// 2 horas
Duration minutes = Duration.ofMinutes(90);
// 90 minutosApós executar o código acima, period contém:
P1Y2M15D // ISO-8601 formatDesafio
FácilCrie um método chamado calculateDifference que recebe 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 fim
- Retornar a diferença no formato especificado
As mensagens de retorno devem ser:
- Se datas inválidas: retornar "Invalid date format"
- Se unidade inválida: retornar "Invalid unit"
- Se formato inválido: retornar "Invalid format"
- Para period com formato "full": "Years: X, Months: Y, Days: Z"
- Para period com formato "simple": "XyYmZd"
- Para duration com formato "full": "Hours: X, Minutes: Y"
- Para duration com formato "simple": "XhYm"
Folha de consulta
Period representa quantidades baseadas em datas (anos, meses, dias), enquanto Duration representa quantidades baseadas em tempo (horas, minutos, segundos).
Criar um Period:
Period period = Period.of(1, 2, 15);
// 1 year, 2 months, 15 daysCriar uma Duration:
Duration duration = Duration.ofHours(2);
// 2 hours
Duration minutes = Duration.ofMinutes(90);
// 90 minutesPeriod usa o formato ISO-8601:
P1Y2M15D // 1 year, 2 months, 15 daysExperimente 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 Palavras