當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Clock tick()用法及代碼示例


java.time.Clock的tick(Clock baseClock,Duration tickDuration)方法是Clock類的靜態方法,該方法返回一個時鍾,該時鍾返回從基本時鍾開始的四舍五入到參數中指定持續時間的最接近值的時刻。指定的基本時鍾持續時間必須為正,不能為負,也不能為null。時鍾將按照給定的持續時間滴答,如果持續時間是一分鍾的一半或一秒的一半或一小時的一半,時鍾將返回四舍五入到一分鍾的一半或一秒或一半的一半的時間。小時,由持續時間指定。

此方法有助於自定義根據持續時間進行滴答的時鍾類別。例如,滴答表示如果持續時間為5秒,則瞬間的第二部分將根據5秒取整。如果基本時鍾的第二部分是13,則它將是10。四舍五入的時鍾返回小於基本時鍾的瞬間。

零或一納秒的持續時間將不會對基本時鍾方法產生影響。這些將返回相同的基本時鍾。如果基本時鍾是不可變的,線程安全的和可序列化的,則返回的時鍾也將是不可變的,線程安全的和可序列化的。


用法:

public static Clock tick(Clock baseClock, Duration tickDuration)

參數:此方法采用兩個強製性參數:

  • baseClock-您要根據持續時間四舍五入的基本時鍾。
  • tickDuration-每個可見的滴答聲的持續時間,不舍棄,不為null。

返回值:此方法返回使用默認區域中最佳可用係統時鍾的時鍾

異常:此方法引發以下異常:

  • IllegalArgumentException-如果持續時間為負數,或者部分很小
    而不是一整毫秒,這樣整個持續時間就不能被整分為一秒。
  • ArithmeticException-如果持續時間太大而無法以納秒表示。

例:

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

Expalnation::
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.

下麵的程序演示了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 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 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-



相關用法


注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 Clock tick() Method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。