JavaRush /Курсы /Java Syntax Pro /Современная работа со временем

Современная работа со временем

Java Syntax Pro
16 уровень , 4 лекция
Открыта

1. Класс LocalTime

Класс LocalTime создан для случаев, когда нужно работать только со временем без даты. Например, вы пишете приложение-будильник. Время для вас важно, а дата — нет.

Класс LocalTime очень похож на класс LocalDate: его объекты тоже нельзя изменять после создания.

Получение текущего времени

Чтобы создать новый объект класса LocalTime, нужно воспользоваться статическим методом now(). Пример:

LocalTime time = LocalTime.now();

Где time — это переменная класса LocalTime, а LocalTime.now() — вызов статического метода now() у класса LocalTime.

Пример:

Код Вывод на экран
LocalTime time = LocalTime.now();
System.out.println("Сейчас = " + time);

Сейчас = 09:13:13.642881600

После точки указывается текущее значение наносекунд.

2. Получение заданного времени

Чтобы получить заданное время, нужно воспользоваться статическим методом of(). Пример:

LocalTime time = LocalTime.of(часы, минуты, секунды, наносекунды);

В который можно передать соответственно часы, минуты, секунды и наносекунды.

Пример:

Код Вывод на экран
LocalTime time = LocalTime.of(12, 15, 0, 100);
System.out.println("Сейчас = " + time);
Сейчас = 12:15:00.000000100

Есть, кстати, еще две модификации этого метода:

LocalTime time = LocalTime.of(часы, минуты, секунды);

И

LocalTime time = LocalTime.of(часы, минуты);

Так что можете пользоваться каким вам удобнее.

Получение времени по номеру секунды

Также можно получить время по номеру секунды в сутках: для этого есть специальный статический метод ofSecondOfDay():

LocalTime time = LocalTime.ofSecondOfDay(секунды);

Где секунды — это количество секунд, прошедшее с начала суток.

Пример:

Код Вывод на экран
LocalTime time = LocalTime.ofSecondOfDay(10000);
System.out.println(time);

02:46:40

Да,10 тысяч секунд — это чуть меньше трех часов. Все верно.

3. Получение фрагментов времени

Чтобы из объекта LocalTime получить значение определенного элемента времени, используют специальные методы:

Метод Описание
int getHour()
Возвращает часы
int getMinute()
Возвращает минуты
int getSecond()
Возвращает секунды
int getNano()
Возвращает наносекунды

Пример:

Код Вывод на экран
LocalTime now = LocalTime.now();
System.out.println(now.getHour());
System.out.println(now.getMinute());
System.out.println(now.getSecond());
System.out.println(now.getNano());

2
46
40
0

4. Изменение времени в объекте класса LocalTime

Класс LocalTime также содержит методы, которые позволяют работать со временем. Эти методы реализованы по аналогии с методами класса LocalDate: каждый из них не меняет существующий объект LocalTime, а возвращает новый с нужными данными.

Вот какие методы есть у класса LocalTime:

Метод Описание
plusHours(int hours)
Добавляет часы
plusMinutes(int minutes)
Добавляет минуты
plusSeconds(int seconds)
Добавляет секунды
plusNanos(int nanos)
Добавляет наносекунды
minusHours(int hours)
Вычитает часы
minusMinutes(int minutes)
Вычитает минуты
minusSeconds(int seconds)
Вычитает секунды
minusNanos(int nanos)
Вычитает наносекунды

Пример:

Код Вывод на экран
LocalTime time = LocalTime.now();
LocalTime time2 = time.plusHours(2);
LocalTime time3 = time.minusMinutes(40);
LocalTime time4 = time.plusSeconds(3600);

System.out.println(time);
System.out.println(time2);
System.out.println(time3);
System.out.println(time4);





10:33:55.978012200
12:33:55.978012200
09:53:55.978012200
11:33:55.978012200

Обратите внимание, что каждый раз мы получаем новое время относительно первого объекта time. Если добавить ко времени 3600 секунд, это будет ровно 1 час.


Комментарии (124)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Den Winchester Уровень 32
20 сентября 2025
Внимание! В 1-ой задаче переменные надо проинициализировать в классе Solution, а не в методе Main
Виктор Уровень 21
9 сентября 2025
17280 seconds. Два месяца перерыва.
Руслан Уровень 46
3 сентября 2025
Довольно простая лекция
Anonymous #3585174 Уровень 33
18 июля 2025
Like
Vyacheslav Уровень 30 Expert
29 апреля 2025
Во второй задаче интересный момент, может показаться что тут: LocalTime localTime = LocalTime.MIDNIGHT; LocalTime next = amazingMethod(localTime); ... static LocalTime amazingMethod(LocalTime base) { return base.plusHours(3); } обе переменные будут всегда одинаковые (next ссылается на объект localtime) из-за того что ссылка одна и та же. Но поскольку LocalTime иммутабельный класс, то вызов любого изменяющего метода у объекта создаст новый объект! Поэтому метод amazingMethod вернет уже новый объект класса.
Пётр Уровень 75
24 апреля 2025
Если ищите подсказку. Количество минут в сутках нужно поделить (тут сами подумайте на сколько), чтобы выполнилось условие.
Хэйли Эванс Уровень 19
3 апреля 2025
требования последней задачи кривые, вывести 4 строки но давайте угадайте как жто сделали мы иначе валидатор не примет, ппц какойто, ставили бы хоть условие что надо содержать должно только одну строчку кода
Alina Gabidulina Уровень 13
26 июня 2025
странно, что у вас был такой вопрос, достаточно было код запустить и понять, что дело в том, сколько и что мы прибавляем
Vitalii Shevchenko Уровень 1
6 марта 2025
В задачі "Нужно просто посчитать" не намагайтесь придумать колесо. Добавте if для перевірки кількості годин в об'єкта відправленого в параметр. *варіантів може бути безліч
Yasin Akhmadov Уровень 22
11 февраля 2025
Всегда плохо считал
Yasin Akhmadov Уровень 22
11 февраля 2025
Заметьте, старые классы, такие как Calendar и Date хоть и удобны, но LocalDate куда умнее и удобнее.