.toNanos()方法无法正常工作

时间:2019-10-07 10:14:19

标签: java java-8 duration nanotime

我试图制作一种方法,让我知道程序运行需要多少时间,并且由于未知的原因,我无法获得纳秒级的信号。

我尝试阅读以下类,但找不到我做错了什么: 导入java.time.Duration; 导入java.time.Instant;

方法:

defaultdict(<class 'list'>, {'A': ['1', '2'], 'B': ['5', '5', '4'], 'C': ['6']})

主要在这里:

list(groups.items())

如果我使用旧的System.nanoTime();我得到300-400纳秒的结果,但是在相同的情况下使用toNanos()我得到0。

编辑: 我不使用getNano()我使用toNanos()

2 个答案:

答案 0 :(得分:0)

我会接受@Pshemo对Instant.now()的评论。

https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#now--

  

这将查询system UTC clock以获得当前时刻。

链接指向的位置:

  

这可能使用System.currentTimeMillis(),或者使用更高分辨率的时钟(如果有)。

因此它的精度可能会或可能不会高于毫秒。在您的情况下,“可能没有”似乎适用。

答案 1 :(得分:-1)

更仔细地阅读getNano()方法的描述:

  

获取此持续时间中每秒内的纳秒数。的   持续时间的长度使用两个字段存储-秒和   纳秒。纳秒部分是从0到999,999,999的值   即以秒为单位的长度调整。总持续时间为   通过调用此方法和getSeconds()进行定义。

纳米部分仅返回当前秒中的纳秒数。实际上,我以代码示例撰写了有关此问题的简短文章:Java 8 java time package: converting Duration to miliseconds