gpt4 book ai didi

java - 使用/不使用 nanoOfSeconds 将字符串转换为 LocalTime

转载 作者:搜寻专家 更新时间:2023-10-30 21:14:38 29 4
gpt4 key购买 nike

我需要将字符串转换为 LocalTime(java-8 而不是 joda),该字符串中可能有也可能没有 nanoOfSeconds。字符串格式为 07:06:0507:06:05.123456该字符串在秒中可能有也可能没有小数位,如果有,则可以有任意数量的字符来表示纳秒部分。

使用 DateTimeForamtter,例如

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss");

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS");

我可以使用 IF 语句来区分这两种格式,例如:

DateTimeFormatter dtf;
if (time1.contains(".") {
dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS);
} else {
dtf = DateTimeFormatter.ofPattern("H:mm:ss);
}

这很好用,我对此很满意,但我还需要能够在小数点后使用不同数量的位置。

示例数据集可能是:

[11:07:59.68750, 11:08:00.781250, 11:08:00.773437500, 11:08:01]

有没有一种方法可以让格式化程序在小数位数未知时解析小数点后的任意位数而不抛出 java.time.format.DateTimeParseException

我希望我错过了一些非常简单的东西。

最佳答案

不需要做任何特殊的事情来解析这种格式。 LocalTime.parse(String) 已经处理了可选的纳秒:

System.out.println(LocalTime.parse("10:15:30"));
System.out.println(LocalTime.parse("10:15:30."));
System.out.println(LocalTime.parse("10:15:30.1"));
System.out.println(LocalTime.parse("10:15:30.12"));
System.out.println(LocalTime.parse("10:15:30.123456789"));

以上所有解析都很好,另请参阅 Javadoc spec

关于java - 使用/不使用 nanoOfSeconds 将字符串转换为 LocalTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788369/

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