Método Clock tick() en Java con ejemplos

El método tick(Clock baseClock, Duration tickDuration) de java.time.Clock es un método estático de la clase Clock que devuelve un reloj que devuelve instantes desde el reloj base redondeado a la ocurrencia más cercana de la duración especificada en el parámetro. La duración del reloj base especificada debe ser positiva, ni negativa ni nula. El reloj marcará según la duración dada y si la duración es la mitad del minuto o la mitad del segundo o la mitad de la hora, el reloj devolverá instantes redondeados a la mitad del minuto o la mitad del segundo o la mitad del hora, según lo especificado por la duración.

Este método puede ayudar a personalizar la clase de reloj que marca según la duración. Por ejemplo, una marca significa que si se proporciona una duración de 5 segundos, la segunda parte del instante se redondeará a 5 segundos. Si la segunda parte del reloj base es 13, entonces será 10. El reloj redondeado devuelve un instante que es más pequeño que el reloj base.

Una duración de cero o un nanosegundo no tendría ningún efecto en el método del reloj base. Estos devolverán el mismo reloj base. Si el reloj base es inmutable, seguro para subprocesos y serializable, el reloj devuelto también será inmutable, seguro para subprocesos y serializable.

Sintaxis:

public static Clock tick(Clock baseClock, Duration tickDuration)

Parámetros: Este método toma dos parámetros obligatorios:

  • baseClock : el reloj base que desea redondear según la duración.
  • tickDuration : la duración de cada marca visible para redondear el reloj, no negativa, no nula.

Valor devuelto: este método devuelve un reloj que utiliza el mejor reloj del sistema disponible en la zona predeterminada

Excepción: este método arroja las siguientes excepciones:

  • IllegalArgumentException : si la duración es negativa o tiene una parte que es muy inferior
    a un milisegundo completo, de modo que la duración total no es divisible en un segundo.
  • ArithmeticException : si la duración es demasiado grande para representarla en nanosegundos.

Ejemplo:

Code:
Clock baseClock = Clock.systemDefaultZone();
Clock clock = Clock.tick(baseClock, Duration.ofSeconds(10));

Explanation::
method tick() returns the instant which ticks after per 10 sec means the duration 
of the tick is 10sec.is instant actual time is 18:57:51.248Z then due to 10sec duration
it will round to 18:57:50Z and same for 18:59:36.247Z to 18:59:30Z.

Los siguientes programas ilustran el método tick() de la clase java.time.Clock

Programa 1: cuando Clock se crea con systemDefaultZone().

En el siguiente programa, hay tres casos en los que la duración es de 30 segundos, 10 segundos, 3 segundos. Por lo tanto, se debe aplicar el método tick() para estos tres casos.

// Java program to demonstrate
// tick() method of Clock class
  
import java.time.*;
  
// create class
public class tickMethodDemo {
  
    // Main method
    public static void main(String[] args)
    {
  
        // create base Clock with systemDefaultZone() method
        Clock baseclock = Clock.systemDefaultZone();
  
        // get instant of the base class and print instant
        Instant instant = baseclock.instant();
        System.out.println("Instant of Base class " + instant);
  
        // apply tick Method for Duration of 30sec and
        // create clock1 and print instant of clock1
        Clock clock1 = Clock.tick(baseclock, Duration.ofSeconds(30));
        System.out.println("Instant of Clock1 " + clock1.instant());
  
        // apply tick Method for Duration of 10sec and
        // create clock2 and print instant of clock2
        Clock clock2 = Clock.tick(baseclock, Duration.ofSeconds(10));
        System.out.println("Instant of Clock2 " + clock2.instant());
  
        // apply tick Method for Duration of 3sec and
        // create clock3 and print instant of clock3
        Clock clock3 = Clock.tick(baseclock, Duration.ofSeconds(3));
        System.out.println("Instant of Clock3 " + clock3.instant());
    }
}
Producción:

Instant of Base class 2018-08-22T11:18:11.336Z
Instant of Clock1 2018-08-22T11:18:00Z
Instant of Clock2 2018-08-22T11:18:10Z
Instant of Clock3 2018-08-22T11:18:09Z

Programa 2: Imprime el instante del reloj cuando la duración es en Minutos, Horas o Días.

// Java program to demonstrate
// tick() method of Clock class
  
import java.time.*;
  
// create class
public class tickMethodDemo {
  
    // Main method
    public static void main(String[] args)
    {
  
        // create base Clock with systemUTC() method
        Clock baseclock = Clock.systemUTC();
  
        // get instant of the base class and print instant
        Instant instant = baseclock.instant();
        System.out.println("Instant of Base class "
                           + instant);
  
        // apply tick Method for Duration of 10 Minutes
        Clock clock1 = Clock.tick(baseclock,
                                  Duration.ofMinutes(10));
        System.out.println("Instant of Clock1 when duration"
                           + " = 10 minutes is "
                           + clock1.instant());
  
        // apply tick Method for Duration of 2 hours
        Clock clock2 = Clock.tick(baseclock,
                                  Duration.ofHours(2));
        System.out.println("Instant of Clock2 when duration"
                           + " = 2 hours is "
                           + clock2.instant());
  
        // apply tick Method for Duration of 5 days
        Clock clock3 = Clock.tick(baseclock,
                                  Duration.ofDays(5));
        System.out.println("Instant of Clock2 when duration"
                           + " = 5 days is "
                           + clock3.instant());
    }
}
Producción:

Instant of Base class 2018-08-22T11:18:15.533Z
Instant of Clock1 when duration = 10 minutes is 2018-08-22T11:10:00Z
Instant of Clock2 when duration = 2 hours is 2018-08-22T10:00:00Z
Instant of Clock2 when duration = 5 days is 2018-08-22T00:00:00Z

Referencia:
https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html#tick-java.time.Clock-java.time.Duration-

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *