4

private Timestamp timestamp = new Timestamp(System.nanoTime());创建对象时,我正在我的一个实体中进行操作。

如果我 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 年以来的毫秒数)完全无关。

您可以自由比较两个不同的值System.nanoTime()以获得非常准确的时间测量值(理论上最多 1 纳秒),但单独采用绝对值是没有用的。

于 2012-11-02T13:24:58.427 回答
1

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示自某个固定但任意的原始时间以来的纳秒(可能在将来,因此值可能为负数)。在 Java 虚拟机实例中,此方法的所有调用都使用相同的来源;其他虚拟机实例可能使用不同的来源。

文件

于 2012-11-02T13:25:33.707 回答
0

时间戳需要新的时间戳(毫秒)。如果你给它纳秒(new Timestamp(nanoseconds) ---> 1000 倍大),你将在未来获得 1000 次时间戳,无论这意味着什么。这是因为获得的日期是 2282 年

于 2012-11-02T13:27:16.547 回答