是否可以在不使用JNI/本机代码或系统的情况下在Java中以纳秒获得EPOCH,currentTimeMillis()* 1000000L?[副本]

vh0rcniy  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(142)

此问题已在此处有答案

How to get current time in nano seconds in java?(3个答案)
3天前关闭。
我知道这可以在Linux中通过从sys/time.hclock_gettime的本机调用来完成。
我知道这可以用System.currentTimeMillis() * 1000000L来完成,这并不好,因为如果你连续调用它,你可能会有两个相等的epoch时间。
想知道在Java的最新版本中是否已经有了一种Java的方式来获得纳秒级的Epoch。
注意:我想要纳秒精度的历元。我只是不想将它转换为毫秒,例如:

long nanos = TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis());

感谢您的任何帮助!

**EDIT 1:**我不担心得到相同的时间两次。我的目标是有一个真实的的历元时间在纳秒。

wz3gfoph

wz3gfoph1#

这个应该能用即时和其他最近的时间改进来自java.time包。

Instant t = Instant.now();
System.out.println(t.getEpochSecond()*1_000_000_000 + t.getNano());

打印类似于

1682327653903147800

当然,当instant.now()返回时,从nanosecond的Angular 来看,时间肯定已经发生了重大变化。

相关问题