La clase Clock
en Java es una herramienta introducida en Java 8 dentro del paquete java.time
. Esta clase proporciona una forma avanzada y flexible de acceder a la hora actual o al instante actual en el tiempo. Se utiliza principalmente para obtener marcas de tiempo, crear objetos de Instant
y gestionar zonas horarias sin depender directamente del sistema.
La clase Clock
es parte de la API de fecha y hora (java.time
) y representa un reloj que proporciona la hora actual, ya sea en milisegundos desde la época o en Instant
. Puedes usar Clock
para obtener el tiempo de diferentes zonas horarias o ajustar el tiempo para fines de pruebas o simulaciones.
import java.time.Clock;
import java.time.Instant;
public class EjemploClock {
public static void main(String[] args) {
Clock reloj = Clock.systemUTC(); // Reloj basado en UTC
Instant ahora = reloj.instant(); // Obtener el instante actual
System.out.println("Hora actual (UTC): " + ahora);
}
}
En este ejemplo, se crea un Clock
basado en UTC y se obtiene el instante actual utilizando el método instant()
.
1. Clock.systemUTC()
: Obtiene la hora basada en el tiempo universal coordinado (UTC).
2. Clock.systemDefaultZone()
: Usa la zona horaria predeterminada del sistema.
3. Clock.system(ZoneId zone)
: Obtiene la hora en una zona horaria específica.
4. Clock.offset(Clock baseClock, Duration offsetDuration)
: Devuelve un reloj que está desplazado por un período de tiempo específico.
import java.time.Clock;
import java.time.ZoneId;
public class EjemploZonaHoraria {
public static void main(String[] args) {
Clock reloj = Clock.system(ZoneId.of("America/New_York")); // Reloj de Nueva York
System.out.println("Hora en Nueva York: " + reloj.instant());
}
}
En este ejemplo, se utiliza Clock.system()
para obtener la hora en una zona horaria específica.
Clock
es útil para pruebas donde es necesario controlar o manipular el tiempo sin depender del sistema real.
import java.time.Clock;
import java.time.Instant;
public class EjemploRelojFijo {
public static void main(String[] args) {
Clock relojFijo = Clock.fixed(Instant.parse("2024-01-01T10:00:00Z"), ZoneId.of("UTC"));
System.out.println("Reloj fijo: " + relojFijo.instant());
}
}
Este código muestra cómo crear un reloj fijo para simular un instante de tiempo determinado, útil en escenarios de pruebas.
Puedes encontrar más información en la documentación oficial de Clock en Oracle.
Jorge García
Fullstack developer