LocalTimeLocalTime в js-joda представляет собой неизменяемую
модель времени без даты и без часового пояса. Объект описывает только
часы, минуты, секунды и наносекунды, что делает его эквивалентом
локального времени в формате настенных часов.
Основные свойства:
Такая модель используется в сценариях, где важно именно время суток, а не абсолютная временная точка.
LocalTime.now()Фабричный метод now() формирует объект на основе
системных часов окружения выполнения.
import { LocalTime } from 'js-joda';
const time = LocalTime.now();
При создании используются часы системы, при этом дата игнорируется, а извлекается только компонент времени.
Сигнатура:
LocalTime.now()
LocalTime.now(clock)
Использование собственного Clock позволяет
контролировать источник времени, что критично для тестирования.
import { LocalTime, Clock, ZoneOffset } from 'js-joda';
const clock = Clock.fixed(Instant.now(), ZoneOffset.UTC);
const time = LocalTime.now(clock);
ofМетод of является основным способом явного создания
времени:
LocalTime.of(hour, minute)
LocalTime.of(hour, minute, second)
LocalTime.of(hour, minute, second, nanoOfSecond)
Пример:
import { LocalTime } from 'js-joda';
const t1 = LocalTime.of(10, 30);
const t2 = LocalTime.of(10, 30, 45);
const t3 = LocalTime.of(10, 30, 45, 500000000);
Каждый компонент строго проверяется:
Любое отклонение приводит к ошибке времени выполнения.
LocalTime.of(25, 10); // ошибка
LocalTime.of(10, 70); // ошибка
LocalTime не выполняет автоматическую нормализацию
значений. Передача “переполненных” значений не преобразуется, а приводит
к исключению.
ofSecondOfDayМетод формирует время из количества секунд от начала суток:
LocalTime.ofSecondOfDay(secondOfDay)
Пример:
import { LocalTime } from 'js-joda';
const t = LocalTime.ofSecondOfDay(3600); // 01:00
Диапазон:
ofNanoOfDayБолее точная версия, использующая наносекунды:
LocalTime.ofNanoOfDay(nanoOfDay)
Пример:
const t = LocalTime.ofNanoOfDay(3600n * 1_000_000_000n);
Используется для высокоточных измерений времени.
parseСтроковое создание поддерживает ISO-8601 формат времени:
LocalTime.parse(text)
LocalTime.parse(text, formatter)
Поддерживаемые строки:
import { LocalTime } from 'js-joda';
const t1 = LocalTime.parse('10:15');
const t2 = LocalTime.parse('10:15:30');
const t3 = LocalTime.parse('10:15:30.123');
const t = LocalTime.parse('10:15:30.123456789');
DateTimeFormatterГибкий разбор через пользовательские шаблоны:
import { LocalTime, DateTimeFormatter } from 'js-joda';
const formatter = DateTimeFormatter.ofPattern('HH mm ss');
const t = LocalTime.parse('10 20 30', formatter);
LocalTime содержит фиксированные значения:
LocalTime.MIDNIGHT
LocalTime.NOON
LocalTime.MIN
LocalTime.MAX
import { LocalTime } from 'js-joda';
const midnight = LocalTime.MIDNIGHT; // 00:00
const noon = LocalTime.NOON; // 12:00
const min = LocalTime.MIN; // 00:00:00
const max = LocalTime.MAX; // 23:59:59.999999999
Эти значения полезны при вычислениях диапазонов времени внутри суток.
Instant через
ClockХотя LocalTime не содержит даты, он может быть получен
из временной точки:
import { Instant, ZoneId, LocalTime } from 'js-joda';
const instant = Instant.now();
const time = LocalTime.now(Clock.systemDefaultZone());
ZonedDateTime
и LocalDateTimeИзвлечение времени:
const time = zonedDateTime.toLocalTime();
const time = localDateTime.toLocalTime();
При создании через of четвёртый параметр задаёт
точность:
LocalTime.of(10, 30, 15, 123456789);
Структура хранения:
LocalTime сохраняет полную точность без округления. При
вычислениях сохраняется исходная шкала наносекунд.
Неправильные значения приводят к:
DateTimeExceptionПримеры:
LocalTime.of(-1, 0); // ошибка
LocalTime.of(12, 60); // ошибка
LocalTime.ofSecondOfDay(90000); // ошибка
Отсутствует неявное приведение типов:
Создание может комбинироваться с преобразованиями:
const time = LocalTime
.of(10, 0)
.plusMinutes(30)
.plusSeconds(15);
Хотя это уже не создание, а модификация, базовый объект всегда создаётся через фабричные методы.
const start = LocalTime.of(9, 0);
const end = LocalTime.of(18, 0);
const time = LocalTime.parse(json.time);
const time = LocalTime.ofSecondOfDay(seconds % 86400);
LocalTime хранит данные в виде:
Все представления приводятся к единой внутренней структуре, что обеспечивает быстрые операции сравнения и вычислений.
| Способ | Источник | Точность | Использование |
|---|---|---|---|
now() |
системное время | наносекунды | текущее время |
of() |
ручные значения | наносекунды | конструирование |
parse() |
строка | наносекунды | десериализация |
ofSecondOfDay() |
секунды суток | секунды | оптимизация |
ofNanoOfDay() |
наносекунды суток | наносекунды | высокая точность |