我有一个带皮秒的字符串日期(句点后的 9 到 12 位数字),当我尝试使用以下内容解析日期时DateTimeFormatter:DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSSSSS");它抛出一个异常,表示我不能在句点后创建超过 9 位数字的格式。是否有另一个类可以解析日期,或者不同的解析方式。任何解决方案都会帮助我,但更喜欢使用的类/方式 LocalDateTime
1 回答
慕慕森
TA贡献1856条经验 获得超17个赞
没有解决方案
我听说没有任何类、库或数据库可以表示时间的皮秒分辨率。
正如对问题的评论以及Grace Hopper 博士的著名教导,光在一纳秒内仅传播约 1 英尺。光在皮秒内只传播了几分之一毫米。这比计算机技术移动电信号所需的距离要小。因此,如此精细的时间测量在我们的一生中不太可能实用或相关。
截短
如果您的应用程序并不是真正需要picos,我建议截断您的字符串,在小数秒的前九个之后去掉任何数字。然后解析为 aInstant
或LocalDateTime
etc。
滚动你自己的类
如果您必须表示皮秒,我建议根据十进制小数分隔符(在 ISO 8601 标准下可以是逗号或句点 FULL STOP,首选逗号)将输入字符串分成两部分。
将第一部分解析为自纪元(例如 1970-01-01T00:00:00Z)以来的
LocalDateTime
或Instant
或整秒计数。然后将第二部分解析为 64 位长整数。
您可以编写一个名为 的小类PicoMoment
,使用parse
方法在内部表示这两个部分。查看 OpenJDK 源代码以查看在java.time类中内部进行的类似表示。
如果你走这条路,我建议你遵循java.time API 作为模型。
添加回答
举报
0/150
提交
取消