java 用皮秒解析日期

标签 java date-parsing time-format localdate datetimeformatinfo

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

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

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

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

任何解决方案都会对我有帮助,但更喜欢与 LocalDateTime 一起使用的类/方法

最佳答案

没有解决方案

我听说没有任何类、库或数据库可以代表 picosecond时间分辨率。

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

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

截断

如果 pico 对于您的应用程序来说并不是真正必要的,我建议截断您的字符串,删除小数秒的前九个之后的所有数字。然后解析为 InstantLocalDateTime 等。

推出您自己的类(class)

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

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

您可以编写一个名为 PicoMoment 的小类,并使用 parse 方法在内部表示这两个部分。查看 OpenJDK 源代码以查看 java.time 类内部所做的类似表示。

如果您选择这条路线,我建议您遵循 java.time API 作为模型。

关于java 用皮秒解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52082768/

相关文章:

java - 如何在 Java 8/jsr310 中格式化句点?

java - 生成带有内置 XSD 限制的 Java 类

java - 通过小程序压缩 MP3 文件

java - 如何在 hibernate 中限制对象属性中的集合?

mysql - 解析MySQL中的日期

java - 正则表达式、匹配器和 DateTimeParseException : Text '01/08/2018' could not be parsed at index 0

java - 数据库显示为空但登录成功

python - 解析不同的日期格式: Regex

java - 在java中将时间插入mysql数据库

c++ - 在小数秒内格式化一个只有 3 位数字的 posix 时间