在java中获得最准确的系统时间(小时、分钟和秒)的最佳方法是什么?我一直在查看时钟、日期和日历对象。我希望能够用最精确的系统时间对数据包进行时间戳,并通过网络发送它(如果可能的话精确到Milli甚至NanoSeconds )。
发布于 2016-06-29 19:37:09
Java 9
java.time框架支持高达纳秒分辨率的值。这意味着十进制小数秒的9 (9)位数。
在Java 9和更高版本中,Clock的新实现可以捕捉到到该纳秒分辨率的当前时刻。但是“你的里程可能会不同”。实际分辨率和实际精度取决于主机硬件时钟能力。
Instant instant = Instant.now();2016-01-02T12:34:56.123456789Z
Java 8
与Java9一样,java.time类支持纳秒解析。
但是,目前的时刻只捕捉到毫秒的分辨率。这意味着只有三(3)位或更少的小数秒。这一限制是由于用于Clock的遗留实现造成的。
Java 6和7
旧的日期-时间类最初与最早版本的Java捆绑在一起,只支持毫秒的解析。这包括java.util.Date、java.util.Calendar和java.util.GregorianCalendar。这些旧类的设计也很糟糕,令人困惑和麻烦。避开他们。
java.time的许多功能都是在三次-支持项目中移植的,并进一步适应了ThreeTenABP项目中的Android。
据我所知,它们依赖于相同的遗留实现,解析时间仅为毫秒。
准确性
准确度和精密度总是依赖于您的主机硬件时钟能力。
见问题,现代电脑的内部时钟有多精确?
正如我所理解的,今天的普通计算机硬件,你不能指望当前的时刻将被捕捉到单纳秒的精度。
发布于 2016-06-29 18:11:40
如果你想在纳米秒内获得时间,那么使用system.nanoTime();,这将是最好的
https://stackoverflow.com/questions/38106803
复制相似问题