Ste*_* Hu 2 java java-8 java-time
根据java.time文档,java.time应该能够以纳秒精度呈现LocalDateTime或LocalTime,但是当我运行LocalDateTime.now()
并打印出来时,它只显示3位而不是9位.
像这样:
2016-08-11T22:17:35.031
Run Code Online (Sandbox Code Playgroud)
有没有办法获得更高的精度?
我假设你刚刚使用LocalDateTime.toString()
,在这种情况下文档读取:
使用的格式将是最短的,输出省略的部分隐含为零的时间的完整值.
如果您希望显示其他数字,即使它们是零,您也需要创建一个DateTimeFormatter
并使用它来代替:
DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS");
System.out.println(LocalDateTime.now().format(formatter));
Run Code Online (Sandbox Code Playgroud)
此外,LocalDateTime.now()
使用系统默认值Clock
,该默认值仅保证具有毫秒级精度,但如果可用,则可以使用更高分辨率的时钟.您的平台可能没有可用于JRE的时钟,其分辨率高于毫秒.
更新 - 您还可以创建一个LocalDateTime
with LocalDateTime.of()
来验证是否存储了纳秒,并将包含在默认LocalDateTime.toString()
方法的返回值中:
LocalDateTime when =
LocalDateTime.of(2016, Month.AUGUST, 12, 9, 38, 12, 123456789);
System.out.println(when);
Run Code Online (Sandbox Code Playgroud)
以上的输出将是:
2016-08-12T09:38:12.123456789
归档时间: |
|
查看次数: |
8705 次 |
最近记录: |