java datetime now_Java 8 LocalDateTime.now()仅提供毫秒精度

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值