System.nanoTime提供相對精確的計時,但是不能用他來計算當前日期,在jdk中的說明如下:
public static long nanoTime()
- 返回最準確的可用系統計時器的當前值,以毫微秒爲單位。
此方法只能用於測量已過的時間,與系統或鐘錶時間的其他任何時間概念無關。返回值表示從某一固定但任意的時間算起的毫微秒數(或許從以後算起,所以該值可能爲負)。此方法提供毫微秒的精度,但不是必要的毫微秒的準確度。它對於值的更改頻率沒有作出保證。在取值範圍大於約 292 年(263 毫微秒)的連續調用的不同點在於:由於數字溢出,將無法準確計算已過的時間。
例如,測試某些代碼執行的時間長度:
long startTime = System.nanoTime(); // ... the code being measured ... long estimatedTime = System.nanoTime() - startTime;
-
- 返回:
- 系統計時器的當前值,以毫微秒爲單位。
- 從以下版本開始:
- 1.5
System.currentTimeMillis返回的是從1970.1.1 UTC 零點開始到現在的時間,精確到毫秒,平時我們可以根據System.currentTimeMillis來計算當前日期,星期幾等,可以方便的與Date進行轉換,下面時jdk中的介紹:
public static long currentTimeMillis()
- 返回以毫秒爲單位的當前時間。注意,當返回值的時間單位是毫秒時,值的粒度取決於底層操作系統,並且粒度可能更大。例如,許多操作系統以幾十毫秒爲單位測量時間。
請參閱
Date
類的描述,瞭解可能發生在“計算機時間”和協調世界時(UTC)之間的細微差異的討論。 -
- 返回:
- 當前時間與協調世界時 1970 年 1 月 1 日午夜之間的時間差(以毫秒爲單位測量)。
- 所以在使用中,我們可以根據我們具體的目的去正確的選擇他們。