Класс Java LocalTime
LocalTimeявляется важным классом в API даты и времени, представленном в Java 8 (java.timeпакет), который используется для представления времени без информации о часовом поясе. Он специально обрабатывает время суток с точностью до наносекунды.
Особенности класса LocalTime
1. Неизменяемость
LocalTime — неизменяемый класс. Все операции изменения возвращают новый экземпляр, а исходный объект остаётся неизменным.
2. Нет информации о часовом поясе
LocalTime не содержит информации о часовом поясе; он представляет только локальное время.
3. Точность времени
Поддерживает точность времени от часов до наносекунд (HH:mm:ss.nnnnnnnnn).
Создание объектов LocalTime
1. Получение текущего времени
LocalTime currentTime = LocalTime.now();
System.out.println("当前时间: " + currentTime);
2. Создание с помощью метода of()
Пример
LocalTime time1 = LocalTime.of(14, 30);
// Создать 09:15:30
LocalTime time2 = LocalTime.of(9, 15, 30);
// Создать 10:20:30.500 (500 миллисекунд)
LocalTime time3 = LocalTime.of(10, 20, 30, 500000000);
3. Разбор строк
LocalTime parsedTime = LocalTime.parse("08:45");
System.out.println("解析的时间: " + parsedTime);
Общие методы
1. Получение компонентов времени
Пример
<p>int hour = time.getHour(); // 15
int minute = time.getMinute(); // 45
int second = time.getSecond(); // 20
int nano = time.getNano(); // 123456789
2. Сравнение времени
Пример
LocalTime time2 = LocalTime.of(11, 15);
boolean isBefore = time1.isBefore(time2); // true
boolean isAfter = time1.isAfter(time2); // false
boolean isEqual = time1.equals(time2); // false
3. Арифметика времени
Пример
// Добавить 2 часа
LocalTime plusHours = time.plusHours(2); // 11:00
// Вычесть 30 минут
LocalTime minusMinutes = time.minusMinutes(30); // 08:30
// Добавить 1 час и 15 минут
LocalTime plusDuration = time.plus(Duration.ofMinutes(75)); // 10:15
4. Корректировка времени
Пример
// Установить час на 10
LocalTime withHour = time.withHour(10); // 10:30
// Установить минуты на 45
LocalTime withMinute = time.withMinute(45); // 14:45
Форматирование и парсинг
1. Форматирование времени
Пример
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String formattedTime = time.format(formatter); // "16:45:30"
2. Разбор строк времени
Пример
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss a");
LocalTime parsedTime = LocalTime.parse(timeString, formatter);
Примеры практического применения
1. Вычисление интервала между двумя моментами времени
Пример
LocalTime end = LocalTime.of(17, 30);
Duration duration = Duration.between(start, end);
System.out.println("Рабочие часы: " + duration.toHours() + " часов"); // 8 часов
2. Проверка, находится ли оно в пределах рабочих часов
Пример
LocalTime opening = LocalTime.of(8, 0);
LocalTime closing = LocalTime.of(22, 0);
if (current.isAfter(opening) && current.isBefore(closing)) {
System.out.println("The store is open");
} else {
System.out.println("The store is closed");
}
3. Создание диапазона времени
Пример
LocalTime end = start.plusHours(8); // 16:00
System.out.println("Working hours: " + start + " to " + end);
Итог
LocalTimeявляется основным классом в API даты и времени Java 8 для работы с локальным временем. Он предоставляет богатый набор методов для создания, управления и форматирования времени. Благодаря своей неизменяемости и потокобезопасности,LocalTimeон очень хорошо подходит для использования в многопоточных средах. ОсвоениеLocalTimeиспользование этого класса может значительно упростить задачи программирования, связанные со временем.