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

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

Відкрита

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


17
Задача
Java Syntax Zero,  17 рівень,  5 лекція
Недоступна
Тренування на час
Тренування на час
17
Задача
Java Syntax Zero,  17 рівень,  5 лекція
Недоступна
Треба просто порахувати
Треба просто порахувати
Коментарі (12)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Viacheslav B. System Administrator
16 квітня 2024, 11:53
назва другої задачі - говорить сама за себе )
Serhii
Рівень 30
20 липня 2023, 16:45
Реально, хвилинами оперувати швидше, я робив годинами, але все ж вирахував що потрібно 4год і 48хв, тому plusMinutes згодився як ніколи
kalkulator¹
Рівень 51
24 листопада 2022, 17:21
коли відкриваєш якусь задачу в ігтеледжі ловиш міні скрімер на декілька мілі секунд, коли темна тема і тут раптово білий екран, мої очі не взахваті
FAUST_ua
Рівень 29
16 вересня 2022, 22:14
Друга задача заплутала. В ідеалі можна було би більш чітко пояснити в умові що і як змінювати.
hidden #3143523
Рівень 25
7 січня 2023, 14:43
Або зразу відповідь написати
Roman
Рівень 20
Expert
30 липня 2022, 20:36
Друге завдання трохи заплутало, але треба було просто порахувати на калькуляторі і перевести в хвилини)
Artem
Рівень 30
8 вересня 2022, 10:52
пояснить будь-ласка чому саме така відповідь
Віталій
Рівень 32
11 вересня 2022, 13:11
Щоб цикл зробив 4 витки, потрібно щоб на витку 5 його значення було рівним з значенням LocalTime.MIDNIGHT. Якщо кількість годин у методі plusHours ввести - 24/5 (не забувай що остача відкидається), то цикл завершиться після витка 5, тому на допомогу прийде метод plusMinutes, де параметром потрібно ввести кількість хвилин в добі розділену на 5
Artem
Рівень 30
12 вересня 2022, 09:40
дякую!
Бородатий
Рівень 17
15 січня 2023, 14:24
все одно не поняв
Anonymous #3216829
Рівень 8
27 червня 2023, 15:33
Точно, все ж логічно. Збиває з пантилику що там години. Віталій, дуже дякую!
Aleksey Golovin
Рівень 1
1 жовтня 2025, 15:06
Можно без калькулятора 24*60/5. Метод схавав