java解析日期与皮秒

问题描述 投票:2回答:1

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

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

它会抛出一个异常,表示我不能创建一个超过9位数的格式。

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

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

java date-parsing time-format localdate datetimeformatinfo
1个回答
2
投票

No solution

我听说没有代表皮秒时间分辨率的类,库或数据库。

正如对问题的评论,以及Dr. Grace Hopper所着名的,light travels只有一英尺一英尺左右。光线传播的速度仅为皮秒的一小部分。这小于计算机技术移动电信号所用的距离。因此,如此精细的时间测量在我们的生命中不太可能是实际的或相关的。

Truncate

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

Roll-your-own class

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

  • 将第一部分解析为LocalDateTimeInstant或自1970-01-01T00:00:00Z等时代以来的整秒计数。
  • 然后将第二部分解析为64位长整数。

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

如果你走这条路,我建议你按照java.time API作为模型。

© www.soinside.com 2019 - 2024. All rights reserved.