我有一个带有picoseconds的字符串date (句点后9到12位之间),当我尝试用DateTimeFormatter
解析日期时:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSSSSS");
它抛出一个异常,说我不能创建一个格式超过9个数字后的句点。
有没有另一个类可以解析日期,或者有不同的解析方式。
任何解决方案都会对我有所帮助,但我更喜欢使用LocalDateTime
的类/方法
发布于 2018-08-30 04:50:56
无解决方案
我没有听说过任何类、库或数据库能够表示皮秒级的时间分辨率。
正如对这个问题的评论,以及著名的Dr. Grace Hopper教授的那样,light travels大约在一纳秒内只有一英尺。光在皮秒内的传播速度只有一毫米的几分之一。这比计算机技术移动电信号所需的距离要小。因此,如此精细的时间测量在我们的有生之年是不太可能实用或相关的。
截断
如果picos对于你的应用程序来说并不是必需的,我建议截断你的字符串,去掉小数点后9位之后的任何数字。然后解析为Instant
或LocalDateTime
等。
滚动你自己的类
如果必须表示皮秒,我建议根据小数分隔符(在ISO 8601标准下可以是逗号或句号,首选逗号)将输入字符串一分为二。
LocalDateTime
或Instant
,或者是自纪元以来的整秒数,例如1970-01-01T00:00:00Z。然后,您可以编写一个类似于PicoMoment
的小类,并使用parse
方法在内部表示这两个部分。查看OpenJDK源代码,可以看到java.time类内部所做的类似表示。
如果你走这条路,我建议你遵循java.time应用编程接口作为模型。
https://stackoverflow.com/questions/52082768
复制相似问题