gpt4 book ai didi

Java8 LocalDateTime 和 NANO_OF_SECOND 奇怪的格式

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:56 25 4
gpt4 key购买 nike

我试试这段代码:

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));

为了获得亚秒级信息的输出现在 = 2018 年 4 月 12 日 14:47:38.039578300

不幸的是,在每秒的前 100 毫秒内,亚秒信息的前导零被省略,我得到一个非常误导的输出 Now = 12-Apr-2018 14:47:38.39578300 ,这很容易被误解为大约 38.4 秒,或整秒后​​的 396 毫秒,而不是真正的 38.04 秒。

我发现的唯一解决方法是使用 ss.nnnnnnnnn 格式,正好有 9 个 n,以获得我想要的输出。

编辑:

在发布此问题时,我在这方面错过了一些更好的东西。

我对纳秒并不是很感兴趣,但我真正想要的是秒的小数部分(大约 ms 分辨率)。

那么,这个就更合适了

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");

大写的 S 表示亚秒数,当然包括前导零。

最佳答案

要更好地控制分数,您可以使用生成器,而不仅仅是模式字母。具体appendFraction .

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("dd-MMM-yyyy HH:mm:ss")
.appendFraction(ChronoField.NANO_OF_SECOND, 1, 9, true)
.toFormatter();

模式字母“n”很少是您想要的。

关于Java8 LocalDateTime 和 NANO_OF_SECOND 奇怪的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49797930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com