我在Windows上使用JDK8,在Linux上使用JDK8
System.nanoTime()/System.currentTimeMillis()在Windows上运行时,结果是49,Run Code Online (Sandbox Code Playgroud)System.nanoTime(): 74786833960332 System.currentTimeMillis():1507786236263
26236Run Code Online (Sandbox Code Playgroud)System.nanoTime(): 39560110918205325 System.currentTimeMillis():1507786262105
我对结果很困惑,这两个值差别很大.
另外,我认为nanoTime是1,000,000毫秒,所以上面的两个值对我来说都是错误的(也就是说,它们都应该是大约1000000)
根据System.nanotime()文档,它不是system time以纳秒为单位,也与System.currenTimeMillis. 它是平台相关的(这就是差异的原因)纳秒生成器,它用于测量两次调用之间经过的时间。
System.nanotime与当前日期和时间无关.其目的是计算经过的时间.
你的数学和你的比较System.currentTimeMillis()毫无意义.这两个功能是无与伦比的.
在发布到Stack Overflow之前阅读文档.
对于日期时间处理,您根本不应该使用System该类.而是使用Java 8及更高版本中内置的业界领先的java.time类.
Instant.now(). ZonedDateTime.now.在Java 9及更高版本中,两个类都使用新的实现Clock来捕获分辨率中的当前时刻,最长可达纳秒.但请记住,主流计算机缺少具有如此高灵敏度的硬件时钟.微秒可能是2017年你在现实世界中看到的最好的分辨率.
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |