JavaRush /Курси /Java Syntax Zero /Сучасна робота з часом

Сучасна робота з часом

Java Syntax Zero
Рівень 17 , Лекція 5
Відкрита

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 година.


Коментарі (12)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Viacheslav B. Рівень 1
16 квітня 2024
назва другої задачі - говорить сама за себе )
Serhii Рівень 30
20 липня 2023
Реально, хвилинами оперувати швидше, я робив годинами, але все ж вирахував що потрібно 4год і 48хв, тому plusMinutes згодився як ніколи
kalkulator¹ Рівень 51
24 листопада 2022
коли відкриваєш якусь задачу в ігтеледжі ловиш міні скрімер на декілька мілі секунд, коли темна тема і тут раптово білий екран, мої очі не взахваті
FAUST_ua Рівень 29
16 вересня 2022
Друга задача заплутала. В ідеалі можна було би більш чітко пояснити в умові що і як змінювати.
Beisik Рівень 25
7 січня 2023
Або зразу відповідь написати
Roman Рівень 20 Expert
30 липня 2022
Друге завдання трохи заплутало, але треба було просто порахувати на калькуляторі і перевести в хвилини)
Artem Рівень 30
8 вересня 2022
пояснить будь-ласка чому саме така відповідь
Віталій Рівень 32
11 вересня 2022
Щоб цикл зробив 4 витки, потрібно щоб на витку 5 його значення було рівним з значенням LocalTime.MIDNIGHT. Якщо кількість годин у методі plusHours ввести - 24/5 (не забувай що остача відкидається), то цикл завершиться після витка 5, тому на допомогу прийде метод plusMinutes, де параметром потрібно ввести кількість хвилин в добі розділену на 5
Artem Рівень 30
12 вересня 2022
дякую!
Бородатий Рівень 17
15 січня 2023
все одно не поняв
Anonymous #3216829 Рівень 14
27 червня 2023
Точно, все ж логічно. Збиває з пантилику що там години. Віталій, дуже дякую!
Aleksey Golovin Рівень 55
1 жовтня 2025
Можно без калькулятора 24*60/5. Метод схавав