Класс Clock
Класс Clock из пакета java.time представляет собой абстракцию часов, которые возвращают текущий момент времени. Основное назначение класса - предоставлять доступ к текущему Instant, а также к текущей дате и времени в определённом часовом поясе. Класс является абстрактным, поэтому создать его экземпляр напрямую через конструктор нельзя. Вместо этого используются статические фабричные методы, такие как systemUTC, systemDefaultZone и fixed. Первый параметр методов получения времени задаёт часовой пояс, если он требуется. Класс Clock удобен для тестирования, так как позволяет подменять системные часы фиксированными или альтернативными реализациями.
Синтаксис
Clock.systemUTC()
Clock.systemDefaultZone()
Clock.fixed(instant, zone)
clock.instant()
clock.getZone()
clock.millis()
Пример
Давайте получим текущий момент времени с помощью системных часов в UTC:
import java.time.Clock;
import java.time.Instant;
public class Main
{
public static void main(String[] args)
{
Clock clock = Clock.systemUTC();
Instant res = clock.instant();
System.out.println(res);
}
}
Результат выполнения кода:
2025-01-15T10:30:45.123456Z
Пример
Давайте получим текущее количество миллисекунд с начала эпохи:
import java.time.Clock;
public class Main
{
public static void main(String[] args)
{
Clock clock = Clock.systemUTC();
long res = clock.millis();
System.out.println(res);
}
}
Результат выполнения кода:
1736937045123
Пример
Давайте создадим фиксированные часы с заданным моментом времени и часовым поясом:
import java.time.Clock;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Main
{
public static void main(String[] args)
{
Instant instant = Instant.parse("2025-01-15T10:00:00Z");
ZoneId zone = ZoneId.of("Europe/Moscow");
Clock clock = Clock.fixed(instant, zone);
ZonedDateTime res = ZonedDateTime.now(clock);
System.out.println(res);
}
}
Результат выполнения кода:
2025-01-15T13:00+03:00[Europe/Moscow]
Смотрите также
-
класс
Clock.systemUTC,
который возвращает часы в UTC -
класс
Clock.systemDefaultZone,
который возвращает часы в системном поясе -
класс
ZonedDateTime,
который представляет дату и время с поясом -
класс
ZoneId,
который представляет часовой пояс