在java中获得最准确的系统时间(小时分和秒)正确到毫秒的最佳方法是什么?我一直在研究时钟、日期和日历对象。我希望能够使用最准确的系统时间为数据包添加时间戳并通过网络发送(如果可能,精确到 Milli 甚至 NanoSeconds)。
该java.time框架支持最多值纳秒的分辨率。这意味着秒的十进制小数最多九 (9) 位。
在Java 9及更高版本中, 的新实现Clock可以捕获高达该纳秒分辨率的当前时刻。但是“您的里程可能会有所不同”。实际分辨率和实际精度取决于主机硬件时钟能力。
Instant instant = Instant.now();
Run Code Online (Sandbox Code Playgroud)
2016-01-02T12:34:56.123456789Z
与 Java 9 相同,java.time 类支持高达纳秒的分辨率。
但是当前时刻只能以毫秒级的分辨率捕获。这意味着只有三 (3) 位或更少的小数秒。此限制是由于用于Clock.
最早与 Java 最早版本捆绑在一起的旧日期时间类仅支持毫秒分辨率。这包括java.util.Date,java.util.Calendar,和java.util.GregorianCalendar。这些旧的类也设计得很差,很混乱,很麻烦。避开它们。
大部分 java.time 功能在ThreeTen-Backport项目中向后移植,并在ThreeTenABP项目中进一步适应 Android 。
据我所知,这些依赖于相同的遗留实现,只有毫秒的分辨率。
准确度和精确度始终取决于您的主机硬件时钟能力。
请参阅问题,现代 PC 的内部时钟有多精确?
据我了解,当今常见的计算机硬件,您不能指望以纳秒级精度捕获当前时刻。
| 归档时间: |
|
| 查看次数: |
1128 次 |
| 最近记录: |