Автор оригинала: Pankaj Kumar.
Класс Java Clock является частью API даты и времени . Класс Java Clock используется для получения текущего экземпляра, даты и времени с указанием часового пояса.
Класс часов Java
- Класс Java Clock находится в
java.time
пакете. - Java Clock-это абстрактный класс , поэтому мы не можем создать его экземпляр. Однако он содержит несколько статических методов для получения своего экземпляра.
Использование класса Java Clock необязательно, поскольку большинство классов API Date имеют метод
now ()
. Его основная цель состоит в том, чтобы по мере необходимости подключать альтернативные часы. Например, в Инъекции зависимостей пружины .Лучше всего передавать часы в качестве аргумента в метод, для которого требуется текущий момент времени.
- Часы можно использовать вместо
System.currentTimeMillis()
иЧасовой пояс.getDefault()
. - Java предоставляет четыре реализации часов –
FixedClock
,OffsetClock
,SystemClock
иTickClock
. Они являются частью класса Clock, и существуют статические методы, которые возвращают эти реализации Clock.
Методы синхронизации Java
Давайте рассмотрим статические методы класса Clock и их использование.
зона системы по умолчанию()
Метод Clock systemDefaultZone() возвращает экземпляр часов с часовым поясом системы по умолчанию.
Clock clock = Clock.systemDefaultZone(); System.out.println(clock.getZone()); // prints "Asia/Kolkata" for me
мгновенный()
Этот метод возвращает текущий момент времени часов.
Instant instant = clock.instant(); System.out.println(instant); //prints "2018-05-08T17:51:09.102302Z"
систематический()
Этот метод возвращает экземпляр часов с часовым поясом UTC.
clock = Clock.systemUTC(); System.out.println(clock.getZone()); //prints "Z"
система(зона ZoneId)
Этот метод используется для получения экземпляра часов с указанным часовым поясом.
Clock clock = Clock.system(ZoneId.of("Europe/Paris")); System.out.println(clock.instant()); // prints "2018-05-08T17:51:09.116133Z"
миллис()
Этот метод возвращает текущие миллисекунды экземпляра. Это эквивалентно System.currentTimeMillis()
.
System.out.println(clock.millis()); //prints 1525801869116 System.out.println(System.currentTimeMillis()); // prints 1525801869116
смещение(Тактовые базовые часы, Длительность смещения Длительности)
Этот метод используется для получения часов с экземпляром, добавленным к заданным базовым часам. Мы можем использовать его для моделирования тестирования в будущем и прошлом.
Clock pastClock = Clock.offset(clock, Duration.ofMillis(-10000)); System.out.println(clock.millis() - pastClock.millis()); //prints 10000 Clock futureClock = Clock.offset(clock, Duration.ofDays(1)); System.out.println(futureClock.millis() - clock.millis()); //prints 86400000
тик(Базовые часы, Длительность тикания)
Этот метод возвращает часы, которые возвращают моменты из указанных базовых часов, усеченные до ближайшего вхождения указанной продолжительности. Давайте посмотрим, как это используется с примером фрагмента кода.
Clock nearestHourClock = Clock.tick(clock, Duration.ofHours(1)); System.out.println(clock.instant()); System.out.println(nearestHourClock.instant()); Clock nearestSecondClock = Clock.tickSeconds(ZoneId.systemDefault()); System.out.println(nearestSecondClock); System.out.println(nearestSecondClock.instant());
Вывод приведенного выше фрагмента кода:
2018-05-08T17:51:09.116566Z 2018-05-08T17:00:00Z TickClock[SystemClock[Asia/Kolkata],PT1S] 2018-05-08T17:51:09Z
Обратите внимание на использование экземпляров Tick Clock
и Системные часы
.
исправлено(Мгновенное фиксированное мгновение, зона ZoneId)
Этот метод возвращает часы, которые всегда возвращают одно и то же мгновение.
Clock fixedClock = Clock.fixed(instant, ZoneId.systemDefault()); System.out.println(fixedClock); System.out.println(fixedClock.instant()); Thread.sleep(1000); System.out.println(fixedClock.instant());
Выход:
FixedClock[2018-05-08T17:51:09.102302Z,Asia/Kolkata] 2018-05-08T17:51:09.102302Z 2018-05-08T17:51:09.102302Z
Это все для использования класса Java Clock с примерами.
Ссылка: API Doc