0
  long nanoseconds = System.nanoTime();
  long microseconds = nanoseconds / 1000;
  long miliseconds = microseconds / 1000;
  long seconds = miliseconds / 1000;
  long minutes = seconds / 60;
  long hours = minutes / 60;

  System.out.println (hours);

在我的 Windows 机器上于上午 11:35 运行时,打印26. 一天不可能有 26 小时,即使有,也不接近预期的结果11。为什么这不起作用?(另外我不想使用任何时间日期库,我知道那里有更简单的方法)

希望这一切格式正确,因为我在我的手机上。感谢大家!

4

1 回答 1

4

Oracle 文档中,您可以阅读以下内容:

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示自某个固定但任意时间以来的纳秒(可能在将来,因此值可能为负数)。此方法提供纳秒精度,但不一定提供纳秒精度。不保证值的变化频率。由于数值溢出,超过大约 292 年(263 纳秒)的连续调用的差异将无法准确计算经过的时间。

所以你不应该使用这种方法。

于 2016-01-11T16:55:02.330 回答