我有三個不同的日期,格式如下:
long firstDate = System.currentTimeMillis();
long secondDate = System.currentTimeMillis();
long thirdDate = System.currentTimeMillis();
第一個日期是起點。
我想要在起點和其他點之間經過的秒 毫秒。
例子:
第一個日期 = 0.000
秒日期= 1.234
第三日期 = 2.345
uj5u.com熱心網友回復:
首先,了解它System.currentTimeMillis在幾年前被java.time.Instant.
Instant x = Instant.now() ;
用 計算經過的時間Duration。
Duration d = Duration.between ( x , y ) ;
提示:要表示每個時間跨度,請將ThreeTen-Extra庫添加到您的專案中作為其Interval類。
uj5u.com熱心網友回復:
final long totalDiffInMillis = thirdDate - firstDate;
final long diffSeconds = totalDiffInMillis / 1000;
final long diffMillis = totalDiffInMillis % 1000;
System.out.printf("Diff between thirdDate and firstDate: %d seconds, %d milliseconds",
diffSeconds,
diffMillis);
uj5u.com熱心網友回復:
對于您的情況,您可以使用Google Guava 的Stopwatch。
谷歌番石榴秒表 - 創作
Google Guava 提供了一個秒表類來測量時間。它有兩種創建秒表的方法——一種在運行狀態下創建秒表實體,另一種只是創建一個秒表物件而不啟動它。
Stopwatch stopwatch = Stopwatch.createStarted();
以上在運行狀態下回傳秒表。
Stopwatch stopwatch = Stopwatch.create();
呼叫 create() 方法會創建一個尚未啟動的秒表。谷歌番石榴秒表 - 測量經過的時間
我們呼叫經過時間單位的經過時間來獲取經過的時間。
Stopwatch stopwatch = Stopwatch.createStarted();
Thread.sleep(100);
System.out.println(stopwatch.elapsed(TimeUnit.MILLISECONDS));
以上將列印一個略高于 100 的數字。這適用于此處顯示的所有測量值,因為它們都不能提供準確的測量值。甚至 Thread.sleep 的準確性也取決于執行緒調度程式和許多其他因素。
但是,獲取經過時間的首選方法是使用回傳 Duration 物件的 elapsed() 方法。Duration 物件屬于 java.time 包。
Duration elapsed = stopwatch.elapsed();
System.out.println(elapsed.toMillis());
一旦我們有了一個 Duration 實體,我們就可以通過使用它上面的方法來做很多事情(你可以探索 Duration 類的方法)。啟動、停止和重置 Google Guava 秒表
如果秒表是通過呼叫 create() 方法創建的或者處于停止狀態,我們可以通過呼叫 start() 方法來啟動它。要停止秒表,請呼叫 stop() 方法。
在您啟動秒表之前,它不會測量經過的時間。
Stopwatch stopwatch = Stopwatch.createUnstarted();
Thread.sleep(100);
stopwatch.start();
Thread.sleep(100);
System.out.println(stopwatch.elapsed(TimeUnit.MILLISECONDS));
在上面的代碼中,秒表不會考慮第一個睡眠呼叫的執行時間,因為秒表是在它之后才啟動的(在第 3 行)。因此,輸出將僅包括上次睡眠的執行時間。
System.out.println(stopwatch.isRunning());//true
stopwatch.stop();
System.out.println(stopwatch.isRunning());//false
如果秒表仍在運行,秒表的 isRunning 方法將回傳 true。即使秒表停止,我們也可以呼叫 elapsed() 方法(一旦秒表停止,一遍又一遍地呼叫 elapsed 將繼續回傳相同的值)。
現在,如果我們啟動秒表,它將開始計數,加上已經過去的時間。如果我們想重新開始,請呼叫 reset() 方法,它將秒表的經過時間計數重置為 0 并停止秒表。
stopwatch.reset();
stopwatch.start();
Thread.sleep(100);
System.out.println(stopwatch.elapsed(TimeUnit.MILLISECONDS));
方法 start() 和 stop() 一次只能呼叫一次。如果我們連續呼叫 start() 或 stop(),它會拋出 IllegalStateException。換句話說,我們不能啟動已經運行的秒表,反之亦然。
從此頁面復制的示例單擊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/521154.html
標籤:爪哇时间
上一篇:__rand__跨np陣列維度
