Java Clock tick()方法及实例

Java Clock tick()方法及实例

java.time.Cl ock的 tick(Clock baseClock, Duration tickDuration) 方法是Clock类的一个静态方法,它返回一个时钟,该时钟 从基础时钟四舍五入到 参数中指定的持续时间的 最近出现的瞬间 。指定的基础时钟持续时间必须是正数,既不是负数也不是空数。时钟将按照给定的持续时间滴答作响,如果持续时间是分钟的一半或秒的一半或小时的一半,时钟将返回四舍五入到分钟的一半或秒的一半或小时的一半的实例,如持续时间所指定。

这个方法可以帮助定制时钟类,它根据持续时间来打勾。例如,一个滴答意味着如果提供了持续时间5秒,那么瞬间的第二部分将根据5秒四舍五入。如果基本时钟的第二部分是13,那么它将是10。四舍五入的时钟返回比基础时钟小的瞬间。

零或一纳秒的持续时间将对基础时钟方法没有影响。这些将返回相同的基础时钟。如果基础时钟是不可变的、线程安全的和可序列化的,那么返回的时钟也将是不可变的、线程安全的和可序列化的。

语法

public static Clock tick(Clock baseClock, Duration tickDuration)

参数: 该方法需要两个强制性参数。

  • baseClock – 你想根据持续时间进行四舍五入的基础时钟。
  • tickDuration – 四舍五入时钟的每个可见刻度的持续时间,不是负值,也不是空值。

返回值: 该方法返回一个使用默认区域的最佳可用系统时钟的时钟。

异常: 该方法会抛出以下异常。

  • IllegalArgumentException – 如果持续时间是负的,或者有一个部分比整整一毫秒还要小 ,以至于整个持续时间不能被分割成一秒。
  • ArithmeticException – 如果持续时间太大,不能用纳秒表示。

例子

代码:

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

解释: :
方法tick()返回每10秒后滴答的瞬间,意味着滴答的持续时间是10秒。
瞬间的实际时间是18:57:51.248Z,那么由于10秒的持续时间
它将四舍五入到18:57:50Z,同样,18:59:36.247Z到18:59:30Z。

以下程序说明了java.time.Clock类的tick()方法

程序1:当用systemDefaultZone()创建时钟时。

在下面的程序中,有三种情况,持续时间是30秒、10秒、3秒。所以tick()方法必须应用于这三种情况。

// 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());
    }
}

输出:

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

程序2:当持续时间为分钟、小时或天时,打印时钟的瞬间。

// 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());
    }
}

输出:

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

参考资料:
https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html#tick-java.time.Clock-java.time.Duration-

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程