首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java使用皮秒解析日期

java使用皮秒解析日期
EN

Stack Overflow用户
提问于 2018-08-30 01:06:13
回答 1查看 782关注 0票数 2

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

代码语言:javascript
复制
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSSSSS");

它抛出一个异常,说我不能创建一个格式超过9个数字后的句点。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-30 04:50:56

无解决方案

我没有听说过任何类、库或数据库能够表示皮秒级的时间分辨率。

正如对这个问题的评论,以及著名的Dr. Grace Hopper教授的那样,light travels大约在一纳秒内只有一英尺。光在皮秒内的传播速度只有一毫米的几分之一。这比计算机技术移动电信号所需的距离要小。因此,如此精细的时间测量在我们的有生之年是不太可能实用或相关的。

截断

如果picos对于你的应用程序来说并不是必需的,我建议截断你的字符串,去掉小数点后9位之后的任何数字。然后解析为InstantLocalDateTime等。

滚动你自己的类

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

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

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

如果你走这条路,我建议你遵循java.time应用编程接口作为模型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52082768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档