java 用皮秒解析日期

java parse date with picosecond

我有一个带 picoseconds 的字符串日期(句号后的 9 到 12 位数字),当我尝试用 DateTimeFormatter 解析日期时:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSSSSS");

它抛出一个异常,提示我无法在句点后创建超过 9 位的格式。

是否有另一个 class 可以解析日期或不同的解析方式。

任何解决方案都会对我有所帮助,但更喜欢 classes / 与 LocalDateTime

一起工作的方法

无解

我听说没有 class、库或数据库代表 picosecond 时间分辨率。

正如对问题的评论,以及 Dr. Grace Hopper, light travels 的著名教导,一纳秒内只有一英尺。

光在皮秒内传播的距离只有几分之一毫米。想想一粒胡椒粉的宽度,正如 Hopper 在讲座中展示的那样。这比计算机技术移动电信号所需的距离要小。因此,如此精细的时间测量在我们的一生中不太可能实用或相关。

截断

如果 picos 对于您的应用程序并不是真正必需的,我建议截断您的字符串,在小数秒的前九个数字之后删除任何数字。然后解析为 InstantLocalDateTime

自己动手class

如果您必须表示皮秒,我建议根据小数分隔符(在 ISO 8601 标准下可以是逗号或句点句号,首选逗号)将输入字符串一分为二).

  • 将第一部分解析为 LocalDateTimeInstant 或自纪元(例如 1970-01-01T00:00:00Z)以来的整秒计数。
  • 然后将第二部分解析为64位长整数。

您可以使用 parse 方法编写一个名为 PicoMoment 的小 class 来在内部表示这两个部分。查看 OpenJDK 源代码以查看在 java.time classes.

内部进行的类似表示

如果你走这条路,建议你以java.timeAPI为榜样