在Java 8中可以获得微秒吗? Java 8 LocalDateTime类有一个.getNano()方法,它意味着返回纳秒,但在Linux(Ubuntu)和OS X(10.11.5)上它只返回毫秒(当我运行它时它返回301000000,等于301毫秒)我真的需要能够获得微秒.
我知道有可能在我的计算机上获得纳秒(因此从它获得微秒),因为javascript方法process.hrtime()返回一个精确的值.
在任何人开始精确与准确的论证之前,我知道线程之间的纳秒是完全不可靠的,不应该用于比较.
编辑:
要清楚,LocalDateTime类是Java 8 java.time类集的一部分.
更新:
所以我意识到Javascript的process.hrtime就像Java的System.nanoTime()并且实际上并不与挂钟有关,它是时间,因为两种语言之间的某些任意值是不同的.
新问题:有没有办法可以解析这些值的时钟时间? IE浏览器.如果我得到System.currentTimeMillis()和System.nanoTime(),并将其与另一组这些值进行比较,我可以得到第二组值的实际时间吗?
我的问题是我需要使用Java和Javascript进行日志记录,并且需要在两者之间都有一致的微秒字段.
解决方法:
LocalDate.now()依赖于使用System.currentTimeMillis()的SystemClock :: instant()方法,因此您无法使用默认时钟获得更精确的分辨率.
但是,您可以实现自己的高精度时钟并将其与LocalDate结合使用:
LocalDate hpDate = LocalDate.now(microsecondClock);
为了获得高精度,您可以使用具有微秒刻度的TickClock:
Clock microsecondClock = Clock.tick(Clock.systemUTC(), Duration.ofNanos(1000));
或子类Clock并实现您自己的高精度时钟,即使用System.currentTimemillis()和System.nanoTime().
标签:java,clock
来源: https://codeday.me/bug/20190724/1524416.html