【发布时间】:2018-04-12 13:32:16
【问题描述】:
我试试这个代码:
import java.time.*;
...
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"dd-MMM-yyyy HH:mm:ss.n");
System.out.format("Now = %s %n", now.format(formatter));
为了获得具有亚秒级信息的输出
Now = 12-Apr-2018 14:47:38.039578300
不幸的是,在每秒的前 100 毫秒,亚秒信息的前导零被省略了,我得到了一个非常误导性的输出 Now = 12-Apr-2018 14:47:38.39578300 ,很容易被误解为大约 38.4 秒,或者完整之后的 396 毫秒第二,而不是真正的 38.04 秒。
我发现的唯一解决方法是 ss.nnnnnnnnn 的格式,正好有 9 个 n,以获得我想要的输出。
编辑:
有一些更好的东西,我在发布这个问题时错过了这个区域。
我对纳秒并不是很感兴趣,但我真正想要的是秒的小数部分(大约毫秒分辨率)。
那么,这个更合适
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");
大写的 S 表示亚秒位数,当然包括前导零。
【问题讨论】:
-
好的,有什么问题?
-
如果编辑回答了问题,您可以添加答案并回滚编辑。
-
Stackexchange 吓到我了:“你真的想回答你自己的问题吗?不如编辑问题怎么样?”所以剩下的问题是关于
.n和.S之间的区别@jonpebs已经提供了答案,所以我不需要自己再给它了。 -
新用户有时会发布他们的 cmets 作为答案,这是不希望的。我想这就是为什么在那里给出警告信息的原因。欢迎回答自己的问题,这并不罕见。
标签: java datetime java-8 datetime-format java-time