java 微秒_Java中的当前时间(以微秒为单位)
慕勒3428872
Java 9和更高版本:捕獲當前時刻時,分辨率高達納秒。那是9位數的小數。Instant.now()? ?2017-12-23T12:34:56.123456789Z要限制為微秒,請截斷。Instant? ? ? ? ? ? ? ? // Represent a moment in UTC.?.now()? ? ? ? ? ? ? ? ?// Capture the current moment. Returns a `Instant` object.?.truncatedTo(? ? ? ? ? // Lop off the finer part of this moment.?? ? ChronoUnit.MICROS? // Granularity to which we are truncating.?)? ? ? ? ? ? ? ? ? ? ? // Returns another `Instant` object rather than changing the original, per the immutable objects pattern.?2017-12-23T12:34:56.123456Z在實踐中,您將看到用.now現代傳統計算機硬件時鐘捕獲的僅幾微秒,而納秒精度不高。細節(jié)從Java 8開始,其他答案有些過時了。java.timeJava 8和更高版本附帶了java.time框架。這些新類取代了Java最早版本(例如java.util.Date/.Calendar和java.text.SimpleDateFormat)附帶的有缺陷的麻煩的日期時間類。該框架由受Joda-Time啟發(fā)的JSR 310定義,并由ThreeTen-Extra項目擴展。java.time中的類解析為納秒,比舊的日期時間類和Joda-Time所使用的毫秒要細得多。并且比問題中要求的微秒更好。在此處輸入圖片說明Clock 實作盡管java.time類支持表示以納秒為單位的值的數據,但這些類尚未生成以納秒為單位的值。這些now()方法使用與舊的日期時間類相同的舊時鐘實現System.currentTimeMillis()。我們Clock在java.time中具有新接口,但是該接口的實現是相同的舊毫秒時鐘。因此,您可以設置結果的文本表示的格式,ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )以查看小數秒的9位數字,但只有前三位具有以下數字:2017-12-23T12:34:56.789000000ZJava 9中的新時鐘Java 9的OpenJDK和Oracle實現具有Clock粒度更細的新默認實現,最高可達java.time類的納秒級能力。請參見OpenJDK問題,提高java.time.Clock.systemUTC()的實現精度。該問題已成功實施。2017-12-23T12:34:56.123456789Z在裝有macOS Sierra的MacBook Pro(15英寸,2013年末,視網膜)上,我得到的當前時刻以微秒為單位(最多六位數的十進制分數)。2017-12-23T12:34:56.123456Z硬件時鐘請記住,即使采用新的更精細的Clock實現,您的結果也可能因計算機而異。Java依靠底層計算機硬件的時鐘來了解當前時刻。硬件時鐘的分辨率差異很大。例如,如果特定計算機的硬件時鐘僅支持微秒粒度,則任何生成的日期時間值將只有六位數的分數秒,最后三位數為零。硬件時鐘的精度差異很大。僅僅因為時鐘生成的值帶有幾分之一秒的小數位,所以這些數字可能不準確,僅是近似值,會從原子鐘讀取的實際時間中漂移。換句話說,僅僅因為您看到小數點右邊的一堆數字并不意味著您可以相信兩次讀數之間的經過時間是正確的。
總結
以上是生活随笔為你收集整理的java 微秒_Java中的当前时间(以微秒为单位)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: TensorFlow keras数据集本
- 下一篇: SAP PCA利润中心会计案例教程前台操
