我有一個帶皮秒的字符串日期(句點后的 9 到 12 位數字),當我嘗試使用以下內容解析日期時DateTimeFormatter:DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSSSSS");它拋出一個異常,表示我不能在句點后創建超過 9 位數字的格式。是否有另一個類可以解析日期,或者不同的解析方式。任何解決方案都會幫助我,但更喜歡使用的類/方式 LocalDateTime
1 回答

慕慕森
TA貢獻1856條經驗 獲得超17個贊
沒有解決方案
我聽說沒有任何類、庫或數據庫可以表示時間的皮秒分辨率。
正如對問題的評論以及Grace Hopper 博士的著名教導,光在一納秒內僅傳播約 1 英尺。光在皮秒內只傳播了幾分之一毫米。這比計算機技術移動電信號所需的距離要小。因此,如此精細的時間測量在我們的一生中不太可能實用或相關。
截短
如果您的應用程序并不是真正需要picos,我建議截斷您的字符串,在小數秒的前九個之后去掉任何數字。然后解析為 aInstant
或LocalDateTime
etc。
滾動你自己的類
如果您必須表示皮秒,我建議根據十進制小數分隔符(在 ISO 8601 標準下可以是逗號或句點 FULL STOP,首選逗號)將輸入字符串分成兩部分。
將第一部分解析為自紀元(例如 1970-01-01T00:00:00Z)以來的
LocalDateTime
或Instant
或整秒計數。然后將第二部分解析為 64 位長整數。
您可以編寫一個名為 的小類PicoMoment
,使用parse
方法在內部表示這兩個部分。查看 OpenJDK 源代碼以查看在java.time類中內部進行的類似表示。
如果你走這條路,我建議你遵循java.time API 作為模型。
添加回答
舉報
0/150
提交
取消