4

private Timestamp timestamp = new Timestamp(System.nanoTime());オブジェクトが作成されたときに、エンティティの 1 つで実行しています。

タイムスタンプを system.out すると、次のような値が得られます。

2282-08-24 11:25:00.506
2286-04-16 01:47:35.882

ここで何が問題なのですか?

System.currentTimeMillis()正しい日付を示しますが、もっと正確にする必要があります。ここで何が間違っているのでしょうか??

4

3 に答える 3

10

System.nanoTime()時間を測定する完全に抽象的な方法であり、コンピューターが起動してからの CPU サイクル数と関係があります。java.util.Dateエポック時間 (1970 年からのミリ秒数) を使用することとはまったく関係ありません。

の 2 つの異なる値を自由に比較System.nanoTime()して、非常に正確な時間測定値 (理論的には最大 1 ナノ秒) を取得できますが、絶対値だけを取得しても意味がありません。

于 2012-11-02T13:24:58.427 に答える
1

このメソッドは、経過時間を測定するためにのみ使用でき、システム時間またはウォールクロック時間の他の概念とは関係ありません。返される値は、固定されているが任意の起点時刻からのナノ秒を表します (おそらく将来であるため、値は負の可能性があります)。Java 仮想マシンのインスタンスでは、このメソッドのすべての呼び出しで同じオリジンが使用されます。他の仮想マシン インスタンスは別のオリジンを使用する可能性があります。

ドキュメンテーション

于 2012-11-02T13:25:33.707 に答える
0

Timestamp には、新しい Timestamp(ミリ秒) が必要です。ナノ秒 (new Timestamp(nanoseconds) ---> 1000 倍大きい) を指定すると、それが何を意味するにせよ、1000 回後のタイムスタンプが得られます。これは、取得された日付が 2282 年にあるためです。

于 2012-11-02T13:27:16.547 に答える