如何在Java.time中将LocalDateTime的精度设置为纳秒?

问题描述

我假设您只是在使用LocalDateTime.toString(),在这种情况下,文档显示为:

所使用的格式将是最短的格式,用于输出被省略部分隐含为零的时间的完整值。

如果您希望显示其他数字(即使它们为零),则需要创建一个DateTimeFormatter并使用该数字:

DateTimeFormatter formatter =
    DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS");

System.out.println(LocalDateTime.now().format(formatter));

此外,LocalDateTime.now()使用系统默认值Clock,该默认值仅保证具有毫秒精度,但可以使用更高分辨率的时钟(如果有)。您的平台可能没有可供JRE使用的时钟,其分辨率比毫秒高。

-您还可以创建一个LocalDateTimewithLocalDateTime.of()来验证是否存储了纳秒,并将其包含在默认LocalDateTime.toString()方法的返回值中:

LocalDateTime when =
    LocalDateTime.of(2016, Month.AUGUST, 12, 9, 38, 12, 123456789);

System.out.println(when);

上面的输出将是:

2016-08-12T09:38:12.123456789

解决方法

根据java.time文档,java.time应该能够显示具有纳秒精度的LocalDateTime或LocalTime,但是当我运行LocalDateTime.now()并打印出来时,它仅显示3位数字而不是9位数字。

像这样:

2016-08-11T22:17:35.031

有没有办法获得更高的精度?

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”