我有一个字符串日期 picoseconds (句点后的 9 到 12 位数字之间),当我尝试使用 DateTimeFormatter
解析日期时:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSSSSS");
它抛出一个异常,表示我无法创建句点后超过 9 位数字的格式。
是否有另一个类可以解析日期,或者不同的解析方式。
任何解决方案都会对我有帮助,但更喜欢与 LocalDateTime
一起使用的类/方法
最佳答案
没有解决方案
我听说没有任何类、库或数据库可以代表 picosecond时间分辨率。
正如对该问题的评论,以及 Dr. Grace Hopper 的著名教导, light travels一纳秒仅约一英尺。
光在一皮秒内仅传播一毫米。想想一粒胡椒粉的宽度,正如霍珀在讲座中展示的那样。这比计算机技术移动电信号所需的距离还要小。因此,如此精细的时间测量在我们的一生中不太可能实用或相关。
截断
如果 pico 对于您的应用程序来说并不是真正必要的,我建议截断您的字符串,删除小数秒的前九个之后的所有数字。然后解析为 Instant
或 LocalDateTime
等。
推出您自己的类(class)
如果您必须表示皮秒,我建议根据小数分隔符将输入字符串分成两部分(在 ISO 8601 标准下可以是逗号或句点句号,首选逗号)。
- 将第一部分解析为
LocalDateTime
或Instant
或自某个纪元(例如 1970-01-01T00:00:00Z)以来的整秒数。 - 然后将第二部分解析为 64 位长整数。
您可以编写一个名为 PicoMoment
的小类,并使用 parse
方法在内部表示这两个部分。查看 OpenJDK 源代码以查看 java.time 类内部所做的类似表示。
如果您选择这条路线,我建议您遵循 java.time API 作为模型。
关于java 用皮秒解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52082768/