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 час.