Menu
Coddy logo textTech

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
challenge icon

Задание

Легко

Создайте метод с именем calculateDifference, который принимает четыре аргумента:

  1. Строку (start) в формате "yyyy-MM-dd HH:mm"
  2. Строку (end) в формате "yyyy-MM-dd HH:mm"
  3. Строку (unit) либо "period", либо "duration"
  4. Строку (format) либо "full", либо "simple"

Метод должен:

  1. Вычислить разницу между датами start и end
  2. Вернуть разницу в указанном формате

Возвращаемые сообщения должны быть:

  • Если даты неверны: вернуть "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 minutes

Period использует формат 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));
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком