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 对于您的应用程序并不是真正必需的,我建议截断您的字符串,在小数秒的前九个数字之后删除任何数字。然后解析为 Instant
或 LocalDateTime
等
自己动手class
如果您必须表示皮秒,我建议根据小数分隔符(在 ISO 8601 标准下可以是逗号或句点句号,首选逗号)将输入字符串一分为二).
- 将第一部分解析为
LocalDateTime
或 Instant
或自纪元(例如 1970-01-01T00:00:00Z)以来的整秒计数。
- 然后将第二部分解析为64位长整数。
您可以使用 parse
方法编写一个名为 PicoMoment
的小 class 来在内部表示这两个部分。查看 OpenJDK 源代码以查看在 java.time classes.
内部进行的类似表示
如果你走这条路,建议你以java.timeAPI为榜样
我有一个带 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 对于您的应用程序并不是真正必需的,我建议截断您的字符串,在小数秒的前九个数字之后删除任何数字。然后解析为 Instant
或 LocalDateTime
等
自己动手class
如果您必须表示皮秒,我建议根据小数分隔符(在 ISO 8601 标准下可以是逗号或句点句号,首选逗号)将输入字符串一分为二).
- 将第一部分解析为
LocalDateTime
或Instant
或自纪元(例如 1970-01-01T00:00:00Z)以来的整秒计数。 - 然后将第二部分解析为64位长整数。
您可以使用 parse
方法编写一个名为 PicoMoment
的小 class 来在内部表示这两个部分。查看 OpenJDK 源代码以查看在 java.time classes.
如果你走这条路,建议你以java.timeAPI为榜样