Period и Duration
Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 57 из 59.
Period представляет собой количество времени на основе даты (годы, месяцы, дни), в то время как Duration представляет собой количество времени на основе времени (часы, минуты, секунды).
Создать период:
Period period = Period.of(1, 2, 15);
// 1 year, 2 months, 15 daysСоздайте Duration:
Duration duration = Duration.ofHours(2);
// 2 hours
Duration minutes = Duration.ofMinutes(90);
// 90 minutesПосле выполнения приведенного выше кода, period содержит:
P1Y2M15D // ISO-8601 formatЗадание
ЛегкоСоздайте метод с именем calculateDifference, который принимает четыре аргумента:
- Строку (
start) в формате "yyyy-MM-dd HH:mm" - Строку (
end) в формате "yyyy-MM-dd HH:mm" - Строку (
unit) либо "period", либо "duration" - Строку (
format) либо "full", либо "simple"
Метод должен:
- Вычислить разницу между датами start и end
- Вернуть разницу в указанном формате
Возвращаемые сообщения должны быть:
- Если даты неверны: вернуть "Invalid date format"
- Если unit неверен: вернуть "Invalid unit"
- Если format неверен: вернуть "Invalid format"
- Для period с форматом "full": "Years: X, Months: Y, Days: Z"
- Для period с форматом "simple": "XyYmZd"
- Для duration с форматом "full": "Hours: X, Minutes: Y"
- Для duration с форматом "simple": "XhYm"
Шпаргалка
Period представляет количества на основе даты (годы, месяцы, дни), в то время как Duration представляет количества на основе времени (часы, минуты, секунды).
Создать Period:
Period period = Period.of(1, 2, 15);
// 1 year, 2 months, 15 daysСоздать Duration:
Duration duration = Duration.ofHours(2);
// 2 hours
Duration minutes = Duration.ofMinutes(90);
// 90 minutesPeriod использует формат ISO-8601:
P1Y2M15D // 1 year, 2 months, 15 daysПопробуйте сами
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) {
// Напишите ваш код здесь
}
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));
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах4HashSet Часть 1
Что такое HashSet?Добавление элементаУдаление элементаПроверка наличия элементаПустота и размерОчистка и клонированиеПовторение - HashSet10Даты и время
Основы LocalDateОперации с LocalTimeИспользование LocalDateTimePeriod и DurationФорматирование датРабота с часовыми поясами2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов