LocalDate и LocalTime — классы пакета java.time для работы с датой и временем без часового пояса. Это удобно в задачах на Java онлайн: дни рождения, расписания, дедлайны, интервалы «с 09:00 до 18:00». Объекты неизменяемые: методы вроде plusDays() возвращают новый экземпляр. Часто используются операции получения текущих значений (now()), разбор компонентов (getYear(), getHour()), сравнение (isBefore()) и вычисления (until()). Пример: LocalDate d = LocalDate.of(2025, 1, 10); LocalTime t = LocalTime.parse("09:30");. В тренажере — задания и тесты с визуализацией кода и практической тренировкой.
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
- Работа с датами: LocalDate и LocalTime.
- Форматирование дат (DateTimeFormatter).
- Класс Math (min, max, pow, random).
- Ввод данных (Scanner).
- Работа с Enum (перечисления).
1. Создать дату и время из значений
Дополните фрагмент кода на Java так, чтобы он создавал объекты LocalDate и LocalTime с помощью статических методов of. Код должен создать дату 31 декабря 2023 года и время 23 часа 59 минут 30 секунд. Заполните пропуски в вызовах методов of, чтобы программа успешно скомпилировалась и вывела ожидаемые значения. Обратите внимание на синтаксис вызова методов и типы аргументов.
import java.time.LocalDate;
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
// Создаем дату: 2023 год, декабрь (12 месяц), 31 день
LocalDate date = LocalDate.input1S(2023, input2S, 31);
// Создаем время: 23 часа, 59 минут, 30 секунд
LocalTime time = LocalTime.input3S(input4S, 59, 30);
System.out.println("Дата: " + date);
System.out.println("Время: " + time);
}
}2. Выбрать методы для получения компонентов
В данном фрагменте кода создаются объекты LocalDate и LocalTime, после чего из них извлекаются отдельные компоненты (год, месяц, день, час, минута). Вам необходимо выбрать из выпадающего списка подходящие методы для получения каждого компонента. Обратите внимание на различие между методами, возвращающими числовые значения (например, getYear) и теми, которые возвращают объекты (например, getMonth).
import java.time.LocalDate;
import java.time.LocalTime;
public class DateTimeComponents {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2023, 12, 25);
LocalTime time = LocalTime.of(14, 30);
int year = date.input1S();
int month = date.input2S();
int day = date.input3S();
int hour = time.input4S();
int minute = time.input5S();
System.out.println("Дата: " + year + "-" + month + "-" + day);
System.out.println("Время: " + hour + ":" + minute);
}
}3. Исправить разбор времени из строки
В этом фрагменте java-кода допущены две ошибки, связанные с разбором времени из строки с использованием класса LocalTime. Одна ошибка — в формате строки, передаваемой в метод parse, другая — в имени самого метода. Исправьте эти ошибки, чтобы код успешно распарсил время и вывел его на экран.
public class Main { public static void main(String[] args) { String timeStr = "12:30 PM"; LocalTime time = LocalTime.pars(timeStr); System.out.println("Parsed time: " + time); }}4. Собрать код с plusDays/minusMinutes
Из предложенных строк соберите корректную Java-программу, которая создаёт дату 2023-01-01, прибавляет к ней 5 дней, создаёт время 10:30, вычитает 15 минут и выводит оба результата. Одна из строк лишняя и в решение входить не должна. Порядок импортов и строк вывода может быть любым, но все остальные строки должны следовать в логическом порядке.
import java.time.LocalDate;import java.time.LocalTime;public class Main { public static void main(String[] args) { System.out.println(LocalDate.of(2023, 1, 1).plusDays(5)); System.out.println(LocalTime.of(10, 30).minusMinutes(15)); }} System.out.println(LocalDate.now());5. Отметить места, где создается новый объект
Внимательно изучите приведённый фрагмент кода на Java, использующий классы LocalDate и LocalTime. Ваша задача — отметить (кликнуть) все выражения-вызовы методов, которые возвращают новый объект LocalDate или LocalTime. Помните, что эти классы являются неизменяемыми (immutable), поэтому методы, которые кажутся изменяющими дату или время (например, plusDays, withDayOfMonth, plusHours), на самом деле возвращают новый объект. Не отмечайте вызовы методов, которые возвращают примитивные типы (например, int) или другие объекты, а также не отмечайте объявления переменных, присваивания или статические вызовы (например, now()).
LocalDate startDate = LocalDate.now();
LocalTime startTime = LocalTime.now();
// Изменяем дату и время, создавая новые объекты
LocalDate nextWeek = {{startDate.plusWeeks(1)~|~t1}};
LocalDate firstDayOfMonth = {{startDate.withDayOfMonth(1)~|~t2}};
int currentDay = {{startDate.getDayOfMonth()~|~t3}};
LocalTime meetingTime = {{startTime.plusHours(2)~|~t4}};
LocalTime adjustedTime = {{startTime.withHour(9)~|~t5}};
int currentHour = {{startTime.getHour()~|~t6}};
// Сохраняем результаты в новые переменные
LocalDate finalDate = nextWeek.withDayOfMonth(15);
LocalTime finalTime = meetingTime.plusMinutes(30);6. Сколько дней между датами
Проанализируйте приведённый фрагмент кода на Java. В программе создаются два объекта LocalDate с фиксированными значениями, затем вычисляется количество дней между ними с помощью метода until() и константы ChronoUnit.DAYS. Определите, какое целое число будет выведено на экран в результате выполнения этого кода. Введите только это число в поле ответа.
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2023, 5, 10);
LocalDate end = LocalDate.of(2023, 5, 25);
long days = start.until(end, ChronoUnit.DAYS);
System.out.println(days);
}
}