java.time.Clock.offset(Clock,Duration)
The method java.time.Clock.offset(Clock,Duration) returns a wrapper around given Clock with the specified Duration added. This clock implementation allows easily to jump into the past and future.
Method signature
The signature of the java.time.Clock.offset(Clock,Duration) method is as follows:
public static Clock offset( Clock baseClock, Duration offsetDuration)
The method is available since Java 8.
Parameters
- Clock baseClock: the clock to which add the duration to, not null,
- Duration offset: the duration to add, not null.
Return value
Returns a clock based on the given clock with the duration added, never null.
Exceptions
- NullPointerException: when any of the parameters is null.
Example usage
In the following code we use java.time.Clock.offset(Clock baseClock, Duration offset):
package com.farenda.java.time; import java.time.Clock; import java.time.Duration; import java.time.ZoneId; import static java.time.Instant.ofEpochMilli; public class ClockExample { public static void main(String[] args) { Clock constClock = Clock.fixed( ofEpochMilli(0), ZoneId.systemDefault()); System.out.println("Current millis: " + constClock.millis()); // go to the future: Clock clock = Clock.offset( constClock, Duration.ofSeconds(10)); System.out.println("Current millis: " + clock.millis()); // revind back with negative value: clock = Clock.offset(clock, Duration.ofSeconds(-5)); System.out.println("Current millis: " + clock.millis()); // The duration 0 returns the same clock: clock = Clock.offset(constClock, Duration.ZERO); System.out.println("Current millis: " + clock.millis()); System.out.println("Identical? " + (constClock == clock)); } }
The above code produces the following output:
Current millis: 0 Current millis: 10000 Current millis: 5000 Current millis: 0 Identical? true
References:
- More about Fixed Clock